Skip to content

Commit 7c918b4

Browse files
author
changvvb
committed
add tests
1 parent 7b57b6d commit 7c918b4

File tree

13 files changed

+117
-11
lines changed

13 files changed

+117
-11
lines changed

compiler/src/dotty/tools/dotc/core/SymDenotations.scala

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2049,12 +2049,7 @@ object SymDenotations {
20492049

20502050
override final def findMember(name: Name, pre: Type, required: FlagSet, excluded: FlagSet)(using Context): Denotation =
20512051
val raw = if excluded.is(Private) then nonPrivateMembersNamed(name) else membersNamed(name)
2052-
val result = raw.filterWithFlags(required, excluded).asSeenFrom(pre).toDenot(pre)
2053-
// if(name.toSimpleName.toString == "StaticInner" && this.name.toSimpleName.toString.contains("OuterBase")) {
2054-
// println((this.show, raw, result, required, excluded))
2055-
// }
2056-
result
2057-
2052+
raw.filterWithFlags(required, excluded).asSeenFrom(pre).toDenot(pre)
20582053

20592054
final def findMemberNoShadowingBasedOnFlags(name: Name, pre: Type,
20602055
required: FlagSet = EmptyFlags, excluded: FlagSet = EmptyFlags)(using Context): Denotation =

compiler/src/dotty/tools/dotc/typer/Typer.scala

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,6 @@ class Typer extends Namer
381381
}
382382
if !curOwner.is(Package) || isDefinedInCurrentUnit(defDenot) then
383383
result = checkNewOrShadowed(found, Definition) // no need to go further out, we found highest prec entry
384-
// println((found.show, defDenot.show, ctx.owner.show))
385384
found match
386385
case found: NamedType if curOwner.isClass && isInherited(found.denot) =>
387386
checkNoOuterDefs(found.denot, ctx, ctx)
@@ -2136,10 +2135,6 @@ class Typer extends Namer
21362135
if (sym.isOneOf(GivenOrImplicit)) checkImplicitConversionDefOK(sym)
21372136
val tpt1 = checkSimpleKinded(typedType(tpt))
21382137

2139-
if(name.toSimpleName.toString == "create") {
2140-
// println((tpt,tpt1.show))
2141-
}
2142-
21432138
val rhsCtx = ctx.fresh
21442139
val tparamss = paramss1.collect {
21452140
case untpd.TypeDefs(tparams) => tparams
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
object Client {
2+
def test= {
3+
Test.Outer.Nested.sig
4+
Test.Outer.Nested.sig1
5+
Test.Outer.Nested.sig2
6+
val o = new Test.Outer
7+
new o.Nested1().sig
8+
new o.Nested1().sig1
9+
new o.Nested1().sig2
10+
}
11+
12+
def test1 = {
13+
val t = new Test
14+
val o = new t.Outer1
15+
new o.Nested1().sig
16+
new o.Nested1().sig1
17+
new o.Nested1().sig2
18+
}
19+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
public class Test {
2+
static class OuterBase implements OuterBaseInterface {
3+
static class StaticInner {}
4+
class Inner {}
5+
}
6+
interface OuterBaseInterface {
7+
interface InnerFromInterface {}
8+
}
9+
public static class Outer extends OuterBase {
10+
public static class Nested {
11+
public static P<StaticInner, Inner, InnerFromInterface> sig; // was: "type StaticInner", "not found: type Inner", "not found: type InnerFromInterface"
12+
public static P<Outer.StaticInner, Outer.Inner, Outer.InnerFromInterface> sig1; // was: "type StaticInner is not a member of Test.Outer"
13+
public static P<OuterBase.StaticInner, OuterBase.Inner, OuterBaseInterface.InnerFromInterface> sig2;
14+
15+
}
16+
public class Nested1 {
17+
public P<StaticInner, Inner, InnerFromInterface> sig; // was: "not found: type StaticInner"
18+
public P<Outer.StaticInner, Outer.Inner, Outer.InnerFromInterface> sig1; // was: "type StaticInner is not a member of Test.Outer"
19+
public P<OuterBase.StaticInner, OuterBase.Inner, OuterBaseInterface.InnerFromInterface> sig2;
20+
}
21+
}
22+
public class Outer1 extends OuterBase {
23+
public class Nested1 {
24+
public P<StaticInner, Inner, InnerFromInterface> sig; // was: "not found: type StaticInner"
25+
public P<Outer.StaticInner, Outer.Inner, Outer.InnerFromInterface> sig1; // was: "type StaticInner is not a member of Test.Outer"
26+
public P<OuterBase.StaticInner, OuterBase.Inner, OuterBaseInterface.InnerFromInterface> sig2;
27+
}
28+
}
29+
public static class P<A, B, C>{}
30+
}

tests/pos/java-inherited-type1/J.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class J extends S {
2+
// These references all work in Javac because `object O { class I }` erases to `O$I`
3+
4+
void select1(S1.Inner1 i) { new S1.Inner1(); }
5+
void ident(Inner i) {}
6+
7+
void ident1(Inner1 i) {}
8+
void select(S.Inner i) { new S.Inner(); }
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class S extends S1
2+
object S {
3+
class Inner
4+
}
5+
6+
class S1
7+
object S1 {
8+
class Inner1
9+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
object Test {
2+
val j = new J
3+
// force completion of these signatures
4+
j.ident(null);
5+
j.ident1(null);
6+
j.select(null);
7+
j.select1(null);
8+
}

tests/run/t1638-2/JavaClass.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
public class JavaClass {
2+
// This is defined in ScalaClass
3+
public static final Foo.Bar bar = new Foo.Bar();
4+
}

tests/run/t1638-2/ScalaClass.scala

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/* Similar to t10490 -- but defines `Foo` in the object.
2+
* Placing this test within t10490 makes it work without a fix, that's why it's independent.
3+
* Note that this was already working, we add it to make sure we don't regress
4+
*/
5+
6+
class Foo
7+
object Foo {
8+
class Bar {
9+
override def toString: String = "Foo$Bar was instantiated!"
10+
}
11+
}
12+
13+
object Test {
14+
def main(args: Array[String]): Unit = {
15+
// JavaClass is the user of the Scala defined classes
16+
println(JavaClass.bar)
17+
}
18+
}

tests/run/t6138-2.check

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Foo$Bar was instantiated!

tests/run/t6138/JavaClass.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
public class JavaClass {
2+
// This is defined in ScalaClass
3+
public static final Foo.Bar bar = (new Foo()).new Bar();
4+
}

tests/run/t6138/ScalaClass.scala

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Foo {
2+
class Bar {
3+
override def toString: String = "Foo$Bar was instantiated!"
4+
}
5+
}
6+
7+
object Test {
8+
def main(args: Array[String]): Unit = {
9+
// JavaClass is the user of the Scala defined classes
10+
println(JavaClass.bar)
11+
//println(JavaClass.baz)
12+
}
13+
}

tests/run/t6238.check

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Foo$Bar was instantiated!

0 commit comments

Comments
 (0)