Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: Compiler crashes when a constant reference expression is used in an annotation #42934

Open
MaryamZi opened this issue Jun 15, 2024 · 0 comments
Labels
Crash All issues caused by NPE, CCE, etc Priority/High Team/CompilerFE All issues related to Language implementation and Compiler, this exclude run times. Type/Bug

Comments

@MaryamZi
Copy link
Member

Description

$title.

Was trying this as a workaround for #42933.

Steps to Reproduce

public type AnnotationRecord record {|
    string summary?;
    Examples examples?;
|};

public type Examples record {|
    map<ExampleItem> response;
|};

public type ExampleItem record {
    map<string> headers?;
};

const annotation AnnotationRecord annot on type;

const Examples EXAMPLES = {
    response: {

    }
};

@annot {
    examples: EXAMPLES
}
type Employee record {|
    int id;
    string name;
|};
[2024-06-15 07:47:27,357] SEVERE {b7a.log.crash} - Cannot read field "isTestPkg" because "packageID" is null 
java.lang.NullPointerException: Cannot read field "isTestPkg" because "packageID" is null
        at org.wso2.ballerinalang.compiler.semantics.analyzer.Types.getPackageIdString(Types.java:6727)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.Types.getImmutableType(Types.java:6710)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.Types.isSelectivelyImmutableType(Types.java:1611)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.Types.isSelectivelyImmutableType(Types.java:1594)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.Types.isSelectivelyImmutableType(Types.java:1589)
        at org.wso2.ballerinalang.compiler.util.ImmutableTypeCloner.getImmutableType(ImmutableTypeCloner.java:173)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.ConstantValueResolver.updateRecordFields(ConstantValueResolver.java:872)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.ConstantValueResolver.createRecordType(ConstantValueResolver.java:863)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.ConstantValueResolver.checkType(ConstantValueResolver.java:743)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.ConstantValueResolver.updateConstantType(ConstantValueResolver.java:679)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.ConstantValueResolver.constructBLangConstantValueWithExactType(ConstantValueResolver.java:593)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.SymbolResolver.populateAnnotationAttachmentSymbol(SymbolResolver.java:2564)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:1098)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:253)
        at org.wso2.ballerinalang.compiler.tree.BLangAnnotationAttachment.accept(BLangAnnotationAttachment.java:81)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.lambda$visit$6(SemanticAnalyzer.java:646)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:640)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:253)
        at org.wso2.ballerinalang.compiler.tree.BLangTypeDefinition.accept(BLangTypeDefinition.java:124)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyzeNode(SemanticAnalyzer.java:4371)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyzeNode(SemanticAnalyzer.java:4345)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:336)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:253)
        at org.wso2.ballerinalang.compiler.tree.BLangPackage.accept(BLangPackage.java:172)
        at org.wso2.ballerinalang.compiler.tree.SimpleBLangNodeAnalyzer.visitNode(SimpleBLangNodeAnalyzer.java:217)
        at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyze(SemanticAnalyzer.java:304)
        at io.ballerina.projects.internal.CompilerPhaseRunner.typeCheck(CompilerPhaseRunner.java:184)
        at io.ballerina.projects.internal.CompilerPhaseRunner.performTypeCheckPhases(CompilerPhaseRunner.java:110)
        at io.ballerina.projects.ModuleContext.compileInternal(ModuleContext.java:435)
        at io.ballerina.projects.ModuleCompilationState$1.compile(ModuleCompilationState.java:45)
        at io.ballerina.projects.ModuleContext.compile(ModuleContext.java:383)
        at io.ballerina.projects.PackageCompilation.compileModulesInternal(PackageCompilation.java:211)
        at io.ballerina.projects.PackageCompilation.compileModules(PackageCompilation.java:195)
        at io.ballerina.projects.PackageCompilation.compile(PackageCompilation.java:102)
        at io.ballerina.projects.PackageCompilation.from(PackageCompilation.java:97)
        at io.ballerina.projects.PackageContext.getPackageCompilation(PackageContext.java:244)
        at io.ballerina.projects.Package.getCompilation(Package.java:150)
        at io.ballerina.projects.Package.runCodeGeneratorPlugins(Package.java:323)
        at io.ballerina.cli.task.CompileTask.execute(CompileTask.java:153)
        at io.ballerina.cli.TaskExecutor.executeTasks(TaskExecutor.java:40)
        at io.ballerina.cli.cmd.RunCommand.execute(RunCommand.java:258)
        at java.base/java.util.Optional.ifPresent(Optional.java:178)
        at io.ballerina.cli.launcher.Main.main(Main.java:58)

Affected Version(s)

2201.9.1

OS, DB, other environment details and versions

No response

Related area

-> Compilation

Related issue(s) (optional)

No response

Suggested label(s) (optional)

No response

Suggested assignee(s) (optional)

No response

@MaryamZi MaryamZi added Type/Bug Priority/High Team/CompilerFE All issues related to Language implementation and Compiler, this exclude run times. labels Jun 15, 2024
@nipunayf nipunayf added the Crash All issues caused by NPE, CCE, etc label Jun 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Crash All issues caused by NPE, CCE, etc Priority/High Team/CompilerFE All issues related to Language implementation and Compiler, this exclude run times. Type/Bug
Projects
None yet
Development

No branches or pull requests

2 participants