From f0c2a901ad1cafe08deff2d715b1fa8d663812a3 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Fri, 30 Oct 2015 17:22:01 +0100 Subject: [PATCH 1/2] Fix #879 Don't insert a constructor call when typechecking Java classes. --- src/dotty/tools/dotc/parsing/JavaParsers.scala | 4 ++-- src/dotty/tools/dotc/typer/Typer.scala | 2 +- tests/pos/i879.java | 11 +++++++++++ 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 tests/pos/i879.java diff --git a/src/dotty/tools/dotc/parsing/JavaParsers.scala b/src/dotty/tools/dotc/parsing/JavaParsers.scala index 7b9d29ce339e..2457400bbcf5 100644 --- a/src/dotty/tools/dotc/parsing/JavaParsers.scala +++ b/src/dotty/tools/dotc/parsing/JavaParsers.scala @@ -145,9 +145,9 @@ object JavaParsers { // ------------- general parsing --------------------------- /** skip parent or brace enclosed sequence of things */ - def skipAhead(): Unit = { + def skipAhead(openBraces: Int = 0): Unit = { var nparens = 0 - var nbraces = 0 + var nbraces = openBraces do { in.token match { case LPAREN => diff --git a/src/dotty/tools/dotc/typer/Typer.scala b/src/dotty/tools/dotc/typer/Typer.scala index 3ca728895da1..569e4f7d53f7 100644 --- a/src/dotty/tools/dotc/typer/Typer.scala +++ b/src/dotty/tools/dotc/typer/Typer.scala @@ -1027,7 +1027,7 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit */ def ensureConstrCall(cls: ClassSymbol, parents: List[Tree])(implicit ctx: Context): List[Tree] = { val firstParent :: otherParents = parents - if (firstParent.isType && !(cls is Trait)) + if (firstParent.isType && !(cls is Trait) && !cls.is(JavaDefined)) typed(untpd.New(untpd.TypedSplice(firstParent), Nil)) :: otherParents else parents } diff --git a/tests/pos/i879.java b/tests/pos/i879.java new file mode 100644 index 000000000000..6db5b77ff20f --- /dev/null +++ b/tests/pos/i879.java @@ -0,0 +1,11 @@ +class Foo { + Foo(int i) { + } +} + + +class Bar extends Foo { + Bar() { + super(10); + } +} \ No newline at end of file From 125831b666c3a49d41d89d0d94a155acbe55c52b Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Fri, 30 Oct 2015 23:49:38 +0100 Subject: [PATCH 2/2] Address reviewer comments --- src/dotty/tools/dotc/parsing/JavaParsers.scala | 4 ++-- tests/pos/{ => java-interop}/i879.java | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename tests/pos/{ => java-interop}/i879.java (100%) diff --git a/src/dotty/tools/dotc/parsing/JavaParsers.scala b/src/dotty/tools/dotc/parsing/JavaParsers.scala index 2457400bbcf5..7b9d29ce339e 100644 --- a/src/dotty/tools/dotc/parsing/JavaParsers.scala +++ b/src/dotty/tools/dotc/parsing/JavaParsers.scala @@ -145,9 +145,9 @@ object JavaParsers { // ------------- general parsing --------------------------- /** skip parent or brace enclosed sequence of things */ - def skipAhead(openBraces: Int = 0): Unit = { + def skipAhead(): Unit = { var nparens = 0 - var nbraces = openBraces + var nbraces = 0 do { in.token match { case LPAREN => diff --git a/tests/pos/i879.java b/tests/pos/java-interop/i879.java similarity index 100% rename from tests/pos/i879.java rename to tests/pos/java-interop/i879.java