Skip to content

Commit 3fa1fbe

Browse files
authored
Merge pull request #7770 from dotty-staging/fix-#7742
Fix #7742 : Ensure the indentWidth is never null
2 parents e45f03e + c0d9db1 commit 3fa1fbe

File tree

5 files changed

+23
-3
lines changed

5 files changed

+23
-3
lines changed

compiler/src/dotty/tools/dotc/parsing/Scanners.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1359,7 +1359,10 @@ object Scanners {
13591359

13601360
case class InBraces(var width: IndentWidth | Null, outer: Region)
13611361
extends IndentSignificantRegion {
1362-
override def indentWidth = width
1362+
// The indent width starts out as `null` when the opening brace is encountered
1363+
// It is then adjusted when the next token on a new line is encountered.
1364+
override def indentWidth: IndentWidth =
1365+
if width == null then IndentWidth.Zero else width
13631366
}
13641367

13651368
/** A class describing an indentation region.

compiler/src/dotty/tools/dotc/transform/TreeChecker.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,11 @@ class TreeChecker extends Phase with SymTransformer {
7777
testDuplicate(sym, seenClasses, "class")
7878
}
7979

80-
val isDeferredAndPrivate = sym.is(Method) && sym.is(Deferred) && sym.is(Private)
81-
assert(!isDeferredAndPrivate, i"$sym is both Deferred and Private")
80+
val badDeferredAndPrivate =
81+
sym.is(Method) && sym.is(Deferred) && sym.is(Private)
82+
&& !sym.hasAnnotation(defn.NativeAnnot)
83+
&& !sym.is(Erased)
84+
assert(!badDeferredAndPrivate, i"$sym is both Deferred and Private")
8285

8386
checkCompanion(symd)
8487

tests/neg/i7742.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
object A {
2+
for // error // error
3+
}

tests/neg/i7753.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
class A { if 0 // error
2+
} // error

tests/pos/i7741.scala

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class A1 {
2+
@native private def a: Unit
3+
}
4+
trait A2 {
5+
erased def i(a: Int): Int
6+
}
7+
trait A3 {
8+
erased val a: Int
9+
}

0 commit comments

Comments
 (0)