Skip to content

Commit 850899b

Browse files
committed
Merge pull request scala#4049 from lrytz/t8900
SI-8900 Don't assert !isDelambdafyFunction, it may not be accurate
2 parents 219e78b + 347f01d commit 850899b

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

src/compiler/scala/tools/nsc/backend/jvm/BCodeAsmCommon.scala

+4-4
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ final class BCodeAsmCommon[G <: Global](val global: G) {
3030
*/
3131
def isAnonymousOrLocalClass(classSym: Symbol): Boolean = {
3232
assert(classSym.isClass, s"not a class: $classSym")
33-
val res = (classSym.isAnonymousClass || !classSym.originalOwner.isClass)
34-
// lambda classes are always top-level classes.
35-
if (res) assert(!classSym.isDelambdafyFunction)
36-
res
33+
// Here used to be an `assert(!classSym.isDelambdafyFunction)`: delambdafy lambda classes are
34+
// always top-level. However, SI-8900 shows an example where the weak name-based implementation
35+
// of isDelambdafyFunction failed (for a function declared in a package named "lambda").
36+
classSym.isAnonymousClass || !classSym.originalOwner.isClass
3737
}
3838

3939
/**

test/files/pos/t8900.scala

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package foo
2+
package lambdaking
3+
4+
class Test {
5+
def byname(b: => Any) = ???
6+
def foo: Any = {
7+
def bar: Any = {
8+
byname(bar)
9+
}
10+
}
11+
}

0 commit comments

Comments
 (0)