Unable to cast object of type 'Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.CodeunitClassTypeSymbol' to type 'Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.CodeunitTypeSymbol'.
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:
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