AL icon indicating copy to clipboard operation
AL copied to clipboard

Unable to cast object of type 'Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.CodeunitClassTypeSymbol' to type 'Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.CodeunitTypeSymbol'.

Open SchulzOli opened this issue 2 months ago • 0 comments

Please include the following with each issue:

1. Describe the bug

Tried this, but the compiler says "no".

local procedure GetDataUpgradeImplementation(FeatureKey: Record "Feature Key"): Interface "I Feature Data Upgrade"
    var
        IFeatureDataUpgrade: Interface "I Feature Data Upgrade";
    begin
        IFeatureDataUpgrade := Codeunit::FeatureKey."Data Upgrade Codeunit";
        exit(IFeatureDataUpgrade);
end;

it does not finish building and is stuck on this: Image

2. To Reproduce Steps to reproduce the behavior: Try to cast an interface implementation with an integer as the Codeunit, saved in a table field.

see above 

Note: Because the developers need to copy and paste the code snippet, including a code snippet as a media file (i.e. .gif) is not sufficient. (see Problem.txt)

3. Expected behavior Dont know, the output says make an issue. I am a simple man: i make issue! :P But maybe a compile error would be nice, isnt it.

4. Actual behavior A clear and concise description of what happened accompanied by images, animations, or a link to a video showing the issue occurring

Full output:

[Error - 3:08:52 PM] Please report this issue to https://github.com/microsoft/al/issues including information on how to reproduce it, if possible.
Processing of message 'codeLens/resolve' failed with error: 'One or more errors occurred. (Unable to cast object of type 'Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.CodeunitClassTypeSymbol' to type 'Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.CodeunitTypeSymbol'.)'
Details:
System.AggregateException: One or more errors occurred. (Unable to cast object of type 'Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.CodeunitClassTypeSymbol' to type 'Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.CodeunitTypeSymbol'.)
 ---> System.InvalidCastException: Unable to cast object of type 'Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.CodeunitClassTypeSymbol' to type 'Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.CodeunitTypeSymbol'.
   at Microsoft.Dynamics.Nav.CodeAnalysis.Conversions.HasImplicitInterfaceConversion(TypeSymbol source, TypeSymbol destination) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Semantics\Conversions\Conversions.cs:line 883
   at Microsoft.Dynamics.Nav.CodeAnalysis.Conversions.ClassifyStandardImplicitConversion(TypeSymbol source, TypeSymbol destination, Version runtimeVersion) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Semantics\Conversions\Conversions.cs:line 353
   at Microsoft.Dynamics.Nav.CodeAnalysis.Conversions.ClassifyImplicitBuiltInConversionSlow(TypeSymbol source, TypeSymbol destination, Version runtimeVersion) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Semantics\Conversions\Conversions.cs:line 544
   at Microsoft.Dynamics.Nav.CodeAnalysis.Conversions.ClassifyImplicitConversionFromExpression(BoundExpression sourceExpression, TypeSymbol source, TypeSymbol destination) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Semantics\Conversions\Conversions.cs:line 98
   at Microsoft.Dynamics.Nav.CodeAnalysis.Binder.GenerateConversionForAssignment(BoundExpression targetExpression, TypeSymbol targetType, BoundExpression expression, DiagnosticBag diagnostics) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Statements.cs:line 446
   at Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindAssignmentStatement(AssignmentStatementSyntax node, DiagnosticBag diagnostics) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Statements.cs:line 358
   at Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindStatement(StatementSyntax node, DiagnosticBag diagnostics) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Statements.cs:line 85
   at Microsoft.Dynamics.Nav.CodeAnalysis.MemberSemanticModel.IncrementalBinder.BindStatement(StatementSyntax node, DiagnosticBag diagnostics) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compilation\MemberSemanticModel.cs:line 882
   at Microsoft.Dynamics.Nav.CodeAnalysis.MemberSemanticModel.GetBoundNodes(SyntaxNode node) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compilation\MemberSemanticModel.cs:line 370
   at Microsoft.Dynamics.Nav.CodeAnalysis.MemberSemanticModel.GetLowerBoundNode(SyntaxNode node) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compilation\MemberSemanticModel.cs:line 310
   at Microsoft.Dynamics.Nav.CodeAnalysis.SyntaxTreeSemanticModel.GetSymbolInfoWorker(SyntaxNode node, CancellationToken cancellationToken) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compilation\SyntaxTreeSemanticModel.cs:line 95
   at Microsoft.Dynamics.Nav.CodeAnalysis.SemanticModel.GetSymbolInfo(ExpressionSyntax expression, CancellationToken cancellationToken) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compilation\SemanticModel.cs:line 551
   at Microsoft.Dynamics.Nav.CodeAnalysis.SemanticModel.GetSymbolInfoFromNode(SyntaxNode node, CancellationToken cancellationToken) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compilation\SemanticModel.cs:line 409
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindReferences.AbstractReferenceFinder.<>c__DisplayClass12_0.<GetStandardSymbolsNodeMatchFunction>b__0(SyntaxNode node, SemanticModel model) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindReferences\Finders\AbstractReferenceFinder.cs:line 133
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindReferences.AbstractReferenceFinder.FindReferencesInTokensAsync(Document document, IEnumerable`1 tokens, Func`2 tokensMatch, Func`3 symbolsMatch, CancellationToken cancellationToken)
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindReferences.AbstractReferenceFinder.FindReferencesInDocumentUsingIdentifierAsync(String identifier, Document document, Func`2 tokensMatch, Func`3 symbolsMatch, CancellationToken cancellationToken) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindReferences\Finders\AbstractReferenceFinder.cs:line 116
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindReferences.FindReferencesSearchEngine.ProcessDocumentAsync(Document document, SymbolAndProjectId symbolAndProjectId, IReferenceFinder finder) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindReferences\FindReferencesSearchEngine_DocumentProcessing.cs:line 59
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindReferences.FindReferencesSearchEngine.ProcessDocumentAsync(Document document, SymbolAndProjectId symbolAndProjectId, IReferenceFinder finder) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindReferences\FindReferencesSearchEngine_DocumentProcessing.cs:line 68
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindReferences.FindReferencesSearchEngine.ProcessDocumentQueueAsync(Document document, ValueSet documentQueue) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindReferences\FindReferencesSearchEngine_DocumentProcessing.cs:line 40
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindReferences.FindReferencesSearchEngine.ProcessDocumentQueueAsync(Document document, ValueSet documentQueue) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindReferences\FindReferencesSearchEngine_DocumentProcessing.cs:line 47
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindReferences.FindReferencesSearchEngine.ProcessProjectAsync(Project project, MultiDictionary`2 documentMap) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindReferences\FindReferencesSearchEngine_ProjectProcessing.cs:line 96
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindReferences.FindReferencesSearchEngine.ProcessProjectAsync(Project project, Dictionary`2 projectToDocumentMap) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindReferences\FindReferencesSearchEngine_ProjectProcessing.cs:line 73
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindReferences.FindReferencesSearchEngine.ProcessProjectAsync(ProjectId projectId, Dictionary`2 projectToDocumentMap, HashSet`1 visitedProjects) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindReferences\FindReferencesSearchEngine_ProjectProcessing.cs:line 56
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindReferences.FindReferencesSearchEngine.ProcessProjectsAsync(IEnumerable`1 connectedProjectSet, Dictionary`2 projectToDocumentMap) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindReferences\FindReferencesSearchEngine_ProjectProcessing.cs:line 36
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindReferences.FindReferencesSearchEngine.ProcessAsync(Dictionary`2 projectToDocumentMap) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindReferences\FindReferencesSearchEngine.cs:line 106
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindReferences.FindReferencesSearchEngine.FindReferencesAsync(SymbolAndProjectId symbolAndProjectId) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindReferences\FindReferencesSearchEngine.cs:line 64
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindReferences.FindReferencesSearchEngine.FindReferencesAsync(SymbolAndProjectId symbolAndProjectId) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindReferences\FindReferencesSearchEngine.cs:line 69
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindSymbols.SymbolFinder.FindReferencesAsync(SymbolAndProjectId symbolAndProjectId, Solution solution, IStreamingFindReferencesProgress progress, IImmutableSet`1 documents, CancellationToken cancellationToken) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindSymbols\SymbolFinder_References.cs:line 57
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindSymbols.SymbolFinder.FindReferencesAsync(ISymbol symbol, Solution solution, CancellationToken cancellationToken) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindSymbols\SymbolFinder_References.cs:line 28
   at Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces.FindReferences.FindReferencesService.FindReferencedSymbolsInternalAsync(Document document, Int32 position, CancellationToken cancellationToken) in X:\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces\FindReferences\FindReferencesService.cs:line 46
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at Microsoft.Dynamics.Nav.EditorServices.Protocol.LanguageServer.CodeLensResolveRequestHandler.CreateReferencesCodeLens(CodeLensResolveRequest request, Document document, CancellationToken cancellationToken) in X:\source\Prod\Microsoft.Dynamics.Nav.EditorServices.Protocol\LanguageServer\CodeLensResolveRequestHandler.cs:line 95
   at Microsoft.Dynamics.Nav.EditorServices.Protocol.LanguageServer.CodeLensResolveRequestHandler.HandleAsync(CodeLensResolveRequest request, Int32 requestId, CancellationToken cancellationToken) in X:\source\Prod\Microsoft.Dynamics.Nav.EditorServices.Protocol\LanguageServer\CodeLensResolveRequestHandler.cs:line 80
   at Microsoft.Dynamics.Nav.EditorServices.Protocol.MessageProtocol.RequestHandlerBase`1.HandleAsync(JToken requestContents, Int32 requestId, CancellationToken cancellationToken) in X:\source\Prod\Microsoft.Dynamics.Nav.EditorServices.Protocol\MessageProtocol\RequestHandlerBase.cs:line 85
   at Microsoft.Dynamics.Nav.EditorServices.Protocol.RequestRegistry.Process(Message message) in X:\source\Prod\Microsoft.Dynamics.Nav.EditorServices.Protocol\Endpoints\RequestRegistry.cs:line 84

5. Versions:

  • AL Language:
  • Visual Studio Code: 1.105.1
  • Business Central: 27.0
  • List of Visual Studio Code extensions that you have installed:
  • Operating System:
    • [x] Windows
    • [ ] Linux
    • [ ] MacOS

Final Checklist

Please remember to do the following:

  • [x] Search the issue repository to ensure you are reporting a new issue

  • [x] Reproduce the issue after disabling all extensions except the AL Language extension

  • [x] Simplify your code around the issue to better isolate the problem

Internal work item: AB#611870

SchulzOli avatar Oct 28 '25 13:10 SchulzOli