Skip to content

NPE during if else parsing (parser stability) #7753

Closed
@sir-wabbit

Description

@sir-wabbit

minimized code

class A { if 0
}
Stack trace
exception occurred while parsing testing/Test.scala
exception occurred while compiling testing/Test.scala
java.lang.NullPointerException while compiling testing/Test.scala
Exception in thread "main" java.lang.NullPointerException
	at dotty.tools.dotc.parsing.Parsers$Parser.subPart(Parsers.scala:615)
	at dotty.tools.dotc.parsing.Parsers$Parser.subExpr(Parsers.scala:1761)
	at dotty.tools.dotc.parsing.Parsers$Parser.ifExpr(Parsers.scala:1953)
	at dotty.tools.dotc.parsing.Parsers$Parser.expr1$$anonfun$1(Parsers.scala:1793)
	at dotty.tools.dotc.parsing.Scanners$Scanner.endMarkerScope(Scanners.scala:337)
	at dotty.tools.dotc.parsing.Parsers$Parser.expr1(Parsers.scala:1793)
	at dotty.tools.dotc.parsing.Parsers$Parser.templateStatSeq$$anonfun$1(Parsers.scala:3635)
	at dotty.tools.dotc.parsing.Parsers$Parser.checkNoEscapingPlaceholders(Parsers.scala:500)
	at dotty.tools.dotc.parsing.Parsers$Parser.templateStatSeq(Parsers.scala:3671)
	at dotty.tools.dotc.parsing.Parsers$Parser.$anonfun$29(Parsers.scala:3560)
	at dotty.tools.dotc.parsing.Parsers$Parser.enclosed(Parsers.scala:559)
	at dotty.tools.dotc.parsing.Parsers$Parser.inBraces(Parsers.scala:567)
	at dotty.tools.dotc.parsing.Parsers$Parser.inBracesOrIndented(Parsers.scala:580)
	at dotty.tools.dotc.parsing.Parsers$Parser.inDefScopeBraces(Parsers.scala:584)
	at dotty.tools.dotc.parsing.Parsers$Parser.templateBody(Parsers.scala:3560)
	at dotty.tools.dotc.parsing.Parsers$Parser.templateBodyOpt(Parsers.scala:3553)
	at dotty.tools.dotc.parsing.Parsers$Parser.template(Parsers.scala:3530)
	at dotty.tools.dotc.parsing.Parsers$Parser.templateOpt(Parsers.scala:3542)
	at dotty.tools.dotc.parsing.Parsers$Parser.classDefRest$$anonfun$1(Parsers.scala:3298)
	at dotty.tools.dotc.parsing.Scanners$Scanner.endMarkerScope(Scanners.scala:337)
	at dotty.tools.dotc.parsing.Parsers$Parser.classDefRest(Parsers.scala:3300)
	at dotty.tools.dotc.parsing.Parsers$Parser.classDef(Parsers.scala:3292)
	at dotty.tools.dotc.parsing.Parsers$Parser.tmplDef(Parsers.scala:3273)
	at dotty.tools.dotc.parsing.Parsers$Parser.defOrDcl(Parsers.scala:3041)
	at dotty.tools.dotc.parsing.Parsers$Parser.topStatSeq(Parsers.scala:3610)
	at dotty.tools.dotc.parsing.Parsers$Parser.topstats$3(Parsers.scala:3782)
	at dotty.tools.dotc.parsing.Parsers$Parser.compilationUnit$$anonfun$1(Parsers.scala:3787)
	at dotty.tools.dotc.parsing.Parsers$Parser.checkNoEscapingPlaceholders(Parsers.scala:500)
	at dotty.tools.dotc.parsing.Parsers$Parser.compilationUnit(Parsers.scala:3792)
	at dotty.tools.dotc.parsing.Parsers$Parser.parse(Parsers.scala:183)
	at dotty.tools.dotc.typer.FrontEnd.parse$$anonfun$1(FrontEnd.scala:56)
	at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
	at dotty.tools.dotc.typer.FrontEnd.monitor(FrontEnd.scala:42)
	at dotty.tools.dotc.typer.FrontEnd.parse(FrontEnd.scala:66)
	at dotty.tools.dotc.typer.FrontEnd.runOn$$anonfun$1(FrontEnd.scala:101)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.immutable.List.foreach(List.scala:305)
	at dotty.tools.dotc.typer.FrontEnd.runOn(FrontEnd.scala:101)
	at dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:161)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
	at dotty.tools.dotc.Run.runPhases$5(Run.scala:171)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:179)
	at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
	at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:65)
	at dotty.tools.dotc.Run.compileUnits(Run.scala:186)
	at dotty.tools.dotc.Run.compileSources(Run.scala:123)
	at dotty.tools.dotc.Run.compile(Run.scala:106)
	at dotty.tools.dotc.Driver.doCompile(Driver.scala:36)
	at dotty.tools.dotc.Driver.process(Driver.scala:189)
	at dotty.tools.dotc.Driver.process(Driver.scala:158)
	at dotty.tools.dotc.Driver.process(Driver.scala:170)
	at dotty.tools.dotc.Driver.main(Driver.scala:197)
	at dotty.tools.dotc.Main.main(Main.scala)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions