INRIA / INRIA/spoon

bug: Crash when parsing RDF4J while allowing duplicated declarations (again)

Open
#3,725 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
2k
Forks
392
Avg merge
11h 24m
Merged PRs (30d)
36

Description

This happens when parsing RDF4J and allowing duplicated declarations:

```
java.lang.NullPointerException
at spoon.support.compiler.jdt.JDTTreeBuilderQuery.searchTypeBinding(JDTTreeBuilderQuery.java:84)
at spoon.support.compiler.jdt.ReferenceBuilder.getQualifiedTypeReference(ReferenceBuilder.java:285)
at spoon.support.compiler.jdt.JDTTreeBuilderHelper.createTypeAccess(JDTTreeBuilderHelper.java:449)
at spoon.support.compiler.jdt.JDTTreeBuilderHelper.createTargetFieldAccess(JDTTreeBuilderHelper.java:667)
at spoon.support.compiler.jdt.JDTTreeBuilderHelper.createVariableAccess(JDTTreeBuilderHelper.java:271)
at spoon.support.compiler.jdt.JDTTreeBuilder.visit(JDTTreeBuilder.java:1471)
at org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference.traverse(QualifiedNameReference.java:1170)
at org.eclipse.jdt.internal.compiler.ast.EqualExpression.traverse(EqualExpression.java:995)
at org.eclipse.jdt.internal.compiler.ast.IfStatement.traverse(IfStatement.java:292)
at org.eclipse.jdt.internal.compiler.ast.Block.traverse(Block.java:154)
at org.eclipse.jdt.internal.compiler.ast.IfStatement.traverse(IfStatement.java:296)
at org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration.traverse(ConstructorDeclaration.java:704)
at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1681)
at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.traverse(CompilationUnitDeclaration.java:822)
at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.traverse(CompilationUnitDeclaration.java:783)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.traverseUnitDeclaration(JDTBasedSpoonCompiler.java:480)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.lambda$buildModel$0(JDTBasedSpoonCompiler.java:437)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.forEachCompilationUnit(JDTBasedSpoonCompiler.java:464)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.buildModel(JDTBasedSpoonCompiler.java:435)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.buildUnitsAndModel(JDTBasedSpoonCompiler.java:372)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.buildSources(JDTBasedSpoonCompiler.java:335)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.build(JDTBasedSpoonCompiler.java:116)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.build(JDTBasedSpoonCompiler.java:99)
at spoon.Launcher.buildModel(Launcher.java:766)
at sorald.Repair.initLauncher(Repair.java:303)
at sorald.Repair.defaultRepair(Repair.java:125)
at sorald.Repair.repair(Repair.java:112)
at sorald.Repair.repair(Repair.java:87)
at sorald.cli.Cli$RepairCommand.call(Cli.java:157)
at sorald.cli.Cli$RepairCommand.call(Cli.java:57)
at picocli.CommandLine.executeUserObject(CommandLine.java:1933)
at picocli.CommandLine.access$1200(CommandLine.java:145)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2332)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2326)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2291)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2159)
at picocli.CommandLine.execute(CommandLine.java:2058)
at sorald.Main.main(Main.java:7)
```

This is caused by an insufficient null check. The null check that I added here: https://github.com/INRIA/spoon/blob/77b8869bd99e710ea62f8944db6f077cced6da84/src/main/java/spoon/support/compiler/jdt/JDTTreeBuilderQuery.java#L78-L81

Must also be added here: https://github.com/INRIA/spoon/blob/77b8869bd99e710ea62f8944db6f077cced6da84/src/main/java/spoon/support/compiler/jdt/JDTTreeBuilderQuery.java#L84-L86

I.e. `if (memberType.binding != null && ...`

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.