asolarlez / sketch-frontend

Other
33 stars 8 forks source link

Array access on struct crashes frontend #14

Open jfeser opened 2 years ago

jfeser commented 2 years ago
struct X {
  int x;
}
harness void main() {
  if ((new X())[0]) {}
}
[feser@30-93-207 staged-synth]$ sketch -V10 bug.sk 
SKETCH version 1.7.6
Benchmark = bug.sk
    [1661283968.0950 - DEBUG] Running stage 'parse' -- Parse the program from a file
[ERROR] [SKETCH] Failed with NullPointerException exception; message: Cannot invoke "sketch.compiler.ast.core.typs.Type.promotesTo(sketch.compiler.ast.core.typs.Type, sketch.compiler.ast.core.NameResolver)" because "cond" is null
java.lang.NullPointerException: Cannot invoke "sketch.compiler.ast.core.typs.Type.promotesTo(sketch.compiler.ast.core.typs.Type, sketch.compiler.ast.core.NameResolver)" because "cond" is null
    at sketch.compiler.passes.bidirectional.TypeCheck.visitStmtIfThen(TypeCheck.java:1425)
    at sketch.compiler.ast.core.stmts.StmtIfThen.accept(StmtIfThen.java:94)
    at sketch.compiler.passes.bidirectional.BidirectionalAnalysis.doT(BidirectionalAnalysis.java:218)
    at sketch.compiler.passes.bidirectional.BidirectionalAnalysis.procStatement(BidirectionalAnalysis.java:247)
    at sketch.compiler.passes.bidirectional.BidirectionalAnalysis.addStatement(BidirectionalAnalysis.java:206)
    at sketch.compiler.passes.bidirectional.BidirectionalAnalysis.doStatement(BidirectionalAnalysis.java:212)
    at sketch.compiler.ast.core.FEReplacer.visitStmtBlock(FEReplacer.java:525)
    at sketch.compiler.passes.lowering.SymbolTableVisitor.visitStmtBlock(SymbolTableVisitor.java:387)
    at sketch.compiler.passes.bidirectional.BidirectionalAnalysis.visitStmtBlock(BidirectionalAnalysis.java:823)
    at sketch.compiler.ast.core.stmts.StmtBlock.accept(StmtBlock.java:116)
    at sketch.compiler.passes.bidirectional.BidirectionalAnalysis.doT(BidirectionalAnalysis.java:225)
    at sketch.compiler.passes.bidirectional.BidirectionalAnalysis.procStatement(BidirectionalAnalysis.java:247)
    at sketch.compiler.passes.bidirectional.BidirectionalAnalysis.visitFunction(BidirectionalAnalysis.java:733)
    at sketch.compiler.ast.core.Function.accept(Function.java:464)
    at sketch.compiler.passes.bidirectional.BidirectionalAnalysis.doT(BidirectionalAnalysis.java:225)
    at sketch.compiler.passes.bidirectional.BidirectionalAnalysis.doFunction(BidirectionalAnalysis.java:252)
    at sketch.compiler.passes.bidirectional.BidirectionalAnalysis.visitPackage(BidirectionalAnalysis.java:1084)
    at sketch.compiler.ast.core.Package.accept(Package.java:174)
    at sketch.compiler.passes.bidirectional.BidirectionalAnalysis.doT(BidirectionalAnalysis.java:225)
    at sketch.compiler.passes.bidirectional.BidirectionalAnalysis.visitProgram(BidirectionalAnalysis.java:774)
    at sketch.compiler.ast.core.Program.accept(Program.java:145)
    at sketch.compiler.passes.bidirectional.BidirectionalAnalysis.doT(BidirectionalAnalysis.java:225)
    at sketch.compiler.passes.bidirectional.BidirectionalAnalysis.doProgram(BidirectionalAnalysis.java:241)
    at sketch.compiler.main.seq.SequentialSketchMain.preprocAndSemanticCheck(SequentialSketchMain.java:545)
    at sketch.compiler.main.seq.SequentialSketchMain.run(SequentialSketchMain.java:628)
    at sketch.compiler.main.seq.SequentialSketchMain.main(SequentialSketchMain.java:701)
Total time = 129