Skip to content

Conversation

@smarter
Copy link
Member

@smarter smarter commented Jan 10, 2017

The backend uses rawname to define the "inner name" of an InnerClass
entry in a classfile, this should be the simple name of the class before
any mangling takes place but before this commit, we put the mangled name
after flatten there.

Fixing this allows Java code to reference dotty inner classes, except if
they're defined in objects which is still broken until
lampepfl/scala#4 is merged and a new backend
is published.

Review by @DarkDimius

@odersky odersky requested a review from DarkDimius January 11, 2017 03:16
smarter added a commit to dotty-staging/dotty that referenced this pull request Jan 11, 2017
It does not compile with dotty because of
scala#1894 and
lampepfl/scala#4
smarter added a commit to dotty-staging/dotty that referenced this pull request Jan 11, 2017
It does not compile with dotty because of
scala#1894 and
lampepfl/scala#4
smarter added a commit to dotty-staging/dotty that referenced this pull request Jan 11, 2017
It does not compile with dotty because of
scala#1894 and
lampepfl/scala#4
@smarter smarter mentioned this pull request Jan 11, 2017
Copy link
Contributor

@DarkDimius DarkDimius left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Otherwise LGTM

def javaClassName: String = toDenot(sym).fullName.toString// addModuleSuffix(fullNameInternal('.')).toString
def name: Name = sym.name
def rawname: Name = sym.name // todo ????
def rawname: Name = sym.name(ctx.withPhase(ctx.flattenPhase))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should be initial phase, instead of flatten.

The backend uses `rawname` to define the "inner name" of an InnerClass
entry in a classfile, this should be the simple name of the class before
any mangling takes place.

Fixing this allows Java code to reference dotty inner classes, except if
they're defined in objects which is still broken until
lampepfl/scala#4 is merged and a new backend
is published.
@smarter smarter force-pushed the fix/inner-class-emission branch from 755abf7 to 50268a1 Compare January 11, 2017 12:51
@smarter smarter merged commit e9165e4 into scala:master Jan 11, 2017
@allanrenucci allanrenucci deleted the fix/inner-class-emission branch December 14, 2017 19:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants