Al: CodeAnalysis crashes when there is an overload error

Created on 28 Aug 2019  路  1Comment  路  Source: microsoft/AL

In a test codeunit, creating a ModalPageHandler and replicating it, with the same name and the same sign, the CodeAnaliysis crashes.

codeunit 50100 MyCodeunit
{
    Subtype = Test;

    trigger OnRun()
    begin

    end;

    [ModalPageHandler]
    procedure Tes_ModalPageHandler(var CustomerCard: TestPage "Customer Card")
    begin

    end;

    [ModalPageHandler]
    procedure Tes_ModalPageHandler(var CustomerCard: TestPage "Customer Card")
    begin

    end;
} 

Error:

Internal error: System.AggregateException: Si sono verificati uno o pi霉 errori. ---> System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.
   in Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ObjectMembers`1.CompareOverloadParameter(ParameterSymbol parameterA, ParameterSymbol parameterB) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Members\ObjectMembers.cs:riga 294
   in Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ObjectMembers`1.CheckOverloadUniqueness(PooledList`1 methods, MethodSymbol method, DiagnosticBag diagnostics) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Members\ObjectMembers.cs:riga 264
   in Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ObjectMembers`1.ForceMembersCompleteAndCheckUniqueness(SourceLocation locationOpt, DiagnosticBag diagnostics, CancellationToken cancellationToken, Predicate`1 excludeFromNameUniqueness) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Members\ObjectMembers.cs:riga 235
   in Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ObjectMembers`1.ForceCompleteMembers(SourceLocation locationOpt, CancellationToken cancellationToken, Predicate`1 excludeFromNameUniqueness) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Members\ObjectMembers.cs:riga 766
   in Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ObjectMembers`1.ForceComplete(SourceLocation locationOpt, CancellationToken cancellationToken, Predicate`1 excludeFromNameUniqueness) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Members\ObjectMembers.cs:riga 734
   in Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.SourceCodeunitTypeSymbol.ForceComplete(SourceLocation locationOpt, CancellationToken cancellationToken) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Source\SourceCodeunitTypeSymbol.cs:riga 52
   in Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.SourceModuleSymbol.ForceCompleteMemberByLocation(SourceLocation locationOpt, Symbol member, CancellationToken cancellationToken) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Source\SourceModuleSymbol.cs:riga 207
   in Microsoft.Dynamics.Nav.CodeAnalysis.Utilities.UICultureUtilities.<>c__DisplayClass6_0`1.<WithCurrentUICulture>b__0(T param) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Utilities\UICultureUtilities.cs:riga 178
   in System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.<ForWorker>b__1()
   in System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   in System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object <p0>)
   --- Fine della traccia dello stack dell'eccezione interna ---
   in System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   in System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   in System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
   in System.Threading.Tasks.Parallel.For(Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body)
   in Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.SourceModuleSymbol.ForceComplete(SourceLocation locationOpt, CancellationToken cancellationToken) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Source\SourceModuleSymbol.cs:riga 109
   in Microsoft.Dynamics.Nav.CodeAnalysis.Compilation.GetSourceDeclarationDiagnostics(SyntaxTree syntaxTree, Nullable`1 filterSpanWithinTree, Func`4 locationFilterOpt, CancellationToken cancellationToken) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compilation\Compilation.cs:riga 889
   in Microsoft.Dynamics.Nav.CodeAnalysis.Compilation.GetDiagnostics(CompilationStage stage, Boolean includeEarlierStages, CancellationToken cancellationToken) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compilation\Compilation.cs:riga 583
---> (Eccezione interna 0) System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.
   in Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ObjectMembers`1.CompareOverloadParameter(ParameterSymbol parameterA, ParameterSymbol parameterB) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Members\ObjectMembers.cs:riga 294
   in Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ObjectMembers`1.CheckOverloadUniqueness(PooledList`1 methods, MethodSymbol method, DiagnosticBag diagnostics) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Members\ObjectMembers.cs:riga 264
   in Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ObjectMembers`1.ForceMembersCompleteAndCheckUniqueness(SourceLocation locationOpt, DiagnosticBag diagnostics, CancellationToken cancellationToken, Predicate`1 excludeFromNameUniqueness) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Members\ObjectMembers.cs:riga 235
   in Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ObjectMembers`1.ForceCompleteMembers(SourceLocation locationOpt, CancellationToken cancellationToken, Predicate`1 excludeFromNameUniqueness) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Members\ObjectMembers.cs:riga 766
   in Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ObjectMembers`1.ForceComplete(SourceLocation locationOpt, CancellationToken cancellationToken, Predicate`1 excludeFromNameUniqueness) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Members\ObjectMembers.cs:riga 734
   in Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.SourceCodeunitTypeSymbol.ForceComplete(SourceLocation locationOpt, CancellationToken cancellationToken) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Source\SourceCodeunitTypeSymbol.cs:riga 52
   in Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.SourceModuleSymbol.ForceCompleteMemberByLocation(SourceLocation locationOpt, Symbol member, CancellationToken cancellationToken) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Source\SourceModuleSymbol.cs:riga 207
   in Microsoft.Dynamics.Nav.CodeAnalysis.Utilities.UICultureUtilities.<>c__DisplayClass6_0`1.<WithCurrentUICulture>b__0(T param) in F:\a\296\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Utilities\UICultureUtilities.cs:riga 178
   in System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.<ForWorker>b__1()
   in System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   in System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object <p0>)<---

Expected behavior
The second procedure should be marked as an error.

Versions:

  • AL Language: 3.0.168874
bug

Most helpful comment

Hi @Nyryus ! This has been fixed in the preview build. It will reach the marketplace with the next major update.

>All comments

Hi @Nyryus ! This has been fixed in the preview build. It will reach the marketplace with the next major update.

Was this page helpful?
0 / 5 - 0 ratings