Skip to content

Commit f0d0ac8

Browse files
committed
also test getter/setter and constructor params
1 parent 25f8558 commit f0d0ac8

File tree

5 files changed

+57
-9
lines changed

5 files changed

+57
-9
lines changed

compiler/src/dotty/tools/dotc/printing/OutlinePrinter.scala

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@ class OutlinePrinter private (_ctx: Context) extends RefinedPrinter(_ctx) {
2222

2323
/* Typical patterns seen in output of typer for Java code, plus the output of unpickling an ELIDED tree */
2424
def isElidableExpr[T <: Untyped](tree: Tree[T]): Boolean = tree match {
25-
case tree: Ident[T] if tree.name == nme.WILDCARD => true
26-
case tree: Select[T] if tree.symbol == defn.Predef_undefined => true
27-
case Apply(Select(tree: New[T], nme.CONSTRUCTOR), Nil) if tree.tpt.typeOpt.typeSymbol.is(Module) => true
25+
case tree: Ident[T] if tree.name == nme.WILDCARD => true // `ELIDED exprType`
26+
case tree: Literal[T] => true // e.g. `()`
27+
case tree: Select[T] if tree.symbol == defn.Predef_undefined => true // e.g. `Predef.???`
28+
case Apply(Select(tree: New[T], nme.CONSTRUCTOR), Nil)
29+
if tree.tpt.typeOpt.typeSymbol.is(Module) => true // e.g. `new foo.Foo$()` (rhs of a module val)
2830
case _ => false
2931
}
3032

sbt-test/pipelining/Yjava-tasty-fromjavaobject/a/src/main/scala/a/A.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,30 @@
55
public class A {
66

77
public static class Inner<T> extends Object {
8-
public Inner() {}
8+
public T field1;
9+
public T getter1() { return field1; }
10+
public Object field2;
11+
public Object getter2() { return field2; }
12+
13+
public Inner(T param1, Object param2) {
14+
this.field1 = param1;
15+
this.field2 = param2;
16+
}
917

1018
public void meth1(T arg) {}
1119
public <U extends T> void meth2(U arg) {}
1220
}
1321

1422
public static class Inner_sel<T> extends java.lang.Object {
15-
public Inner_sel() {}
23+
public T field1;
24+
public T getter1() { return field1; }
25+
public java.lang.Object field2;
26+
public java.lang.Object getter2() { return field2; }
27+
28+
public Inner_sel(T param1, java.lang.Object param2) {
29+
this.field1 = param1;
30+
this.field2 = param2;
31+
}
1632

1733
public void meth1(T arg) {}
1834
public <U extends T> void meth2(U arg) {}

sbt-test/pipelining/Yjava-tasty-fromjavaobject/a/src/main/scala/a/AImport.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,15 @@
88
public class AImport {
99

1010
public static class Inner<T> extends Object {
11-
public Inner() {}
11+
public T field1;
12+
public T getter1() { return field1; }
13+
public Object field2;
14+
public Object getter2() { return field2; }
15+
16+
public Inner(T param1, Object param2) {
17+
this.field1 = param1;
18+
this.field2 = param2;
19+
}
1220

1321
public void meth1(T arg) {}
1422
}

sbt-test/pipelining/Yjava-tasty-fromjavaobject/b/src/main/scala/b/B.scala

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ object B {
77

88
val newA = new A
99

10-
val newAInner = new A.Inner[Int]()
11-
val newAInner_sel = new A.Inner_sel[Int]()
10+
val newAInner = new A.Inner[Int](23, true)
11+
val newAInner_sel = new A.Inner_sel[Int](23, true)
1212

1313
@main
1414
def test = {
@@ -36,6 +36,20 @@ object B {
3636
newAInner_sel.meth1(1) // OK
3737
newAInner_sel.meth2(1) // OK
3838

39+
assert((newAInner.field1: Int) == 23) // OK
40+
newAInner.field1 = 31 // OK
41+
assert((newAInner.getter1: Int) == 31) // OK
42+
assert(newAInner.field2 == true) // OK
43+
newAInner.field2 = false // OK
44+
assert(newAInner.getter2 == false) // OK
45+
46+
assert((newAInner_sel.field1: Int) == 23) // OK
47+
newAInner_sel.field1 = 31 // OK
48+
assert((newAInner_sel.getter1: Int) == 31) // OK
49+
assert(newAInner_sel.field2 == true) // OK
50+
newAInner_sel.field2 = false // OK
51+
assert(newAInner_sel.getter2 == false) // OK
52+
3953
BImport.testImport() // OK
4054
}
4155
}

sbt-test/pipelining/Yjava-tasty-fromjavaobject/b/src/main/scala/b/BImport.scala

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ object BImport {
66

77
val newA = new AImport
88

9-
val newAInner = new AImport.Inner[Int]()
9+
val newAInner = new AImport.Inner[Int](23, true)
1010

1111
def testImport() = {
1212
newA.meth1(1) // OK
@@ -18,6 +18,14 @@ object BImport {
1818
newA.meth7(ai: _*) // OK (will copy the array at Erasure)
1919

2020
newAInner.meth1(1) // OK
21+
22+
assert((newAInner.field1: Int) == 23) // OK
23+
newAInner.field1 = 31 // OK
24+
assert((newAInner.getter1: Int) == 31) // OK
25+
26+
assert(newAInner.field2 == true) // OK
27+
newAInner.field2 = false // OK
28+
assert(newAInner.getter2 == false) // OK
2129
}
2230
}
2331

0 commit comments

Comments
 (0)