diff --git a/compiler/src/dotty/tools/dotc/parsing/Scanners.scala b/compiler/src/dotty/tools/dotc/parsing/Scanners.scala index b7001bbdc5b2..54e1765a7df5 100644 --- a/compiler/src/dotty/tools/dotc/parsing/Scanners.scala +++ b/compiler/src/dotty/tools/dotc/parsing/Scanners.scala @@ -1359,7 +1359,10 @@ object Scanners { case class InBraces(var width: IndentWidth | Null, outer: Region) extends IndentSignificantRegion { - override def indentWidth = width + // The indent width starts out as `null` when the opening brace is encountered + // It is then adjusted when the next token on a new line is encountered. + override def indentWidth: IndentWidth = + if width == null then IndentWidth.Zero else width } /** A class describing an indentation region. diff --git a/compiler/src/dotty/tools/dotc/transform/TreeChecker.scala b/compiler/src/dotty/tools/dotc/transform/TreeChecker.scala index 73af47c275bb..3bd6c91b4068 100644 --- a/compiler/src/dotty/tools/dotc/transform/TreeChecker.scala +++ b/compiler/src/dotty/tools/dotc/transform/TreeChecker.scala @@ -77,8 +77,11 @@ class TreeChecker extends Phase with SymTransformer { testDuplicate(sym, seenClasses, "class") } - val isDeferredAndPrivate = sym.is(Method) && sym.is(Deferred) && sym.is(Private) - assert(!isDeferredAndPrivate, i"$sym is both Deferred and Private") + val badDeferredAndPrivate = + sym.is(Method) && sym.is(Deferred) && sym.is(Private) + && !sym.hasAnnotation(defn.NativeAnnot) + && !sym.is(Erased) + assert(!badDeferredAndPrivate, i"$sym is both Deferred and Private") checkCompanion(symd) diff --git a/tests/neg/i7742.scala b/tests/neg/i7742.scala new file mode 100644 index 000000000000..9294decf531d --- /dev/null +++ b/tests/neg/i7742.scala @@ -0,0 +1,3 @@ +object A { + for // error // error +} \ No newline at end of file diff --git a/tests/neg/i7753.scala b/tests/neg/i7753.scala new file mode 100644 index 000000000000..2423c6516745 --- /dev/null +++ b/tests/neg/i7753.scala @@ -0,0 +1,2 @@ +class A { if 0 // error +} // error diff --git a/tests/pos/i7741.scala b/tests/pos/i7741.scala new file mode 100644 index 000000000000..72b83b172552 --- /dev/null +++ b/tests/pos/i7741.scala @@ -0,0 +1,9 @@ +class A1 { + @native private def a: Unit +} +trait A2 { + erased def i(a: Int): Int +} +trait A3 { + erased val a: Int +} \ No newline at end of file