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

'Type inheritance' with augmentations does not support more than one step #56226

Open
eernstg opened this issue Jul 11, 2024 · 0 comments
Open
Labels
area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. feature-augmentations Implementation of the augmentations feature P2 A bug or feature request we're likely to work on type-bug Incorrect behavior (everything from a crash to more subtle misbehavior)

Comments

@eernstg
Copy link
Member

eernstg commented Jul 11, 2024

Consider the following program:

int? j = 0;
augment var j = augmented + 1;
augment var j = augmented + 1; 

This program causes the analyzer to encounter an unhandled exception.

Stack trace
An unexpected error was encountered by the Analysis Server.
Please file an issue at https://github.com/dart-lang/sdk/issues/new/choose with the following details:

Internal error: Null check operator used on a null value
#0      BinaryExpressionResolver._resolveUserDefinableAugmented (package:analyzer/src/dart/resolver/binary_expression_resolver.dart:342:55)
#1      BinaryExpressionResolver._resolveUserDefinable (package:analyzer/src/dart/resolver/binary_expression_resolver.dart:306:7)
#2      BinaryExpressionResolver.resolve (package:analyzer/src/dart/resolver/binary_expression_resolver.dart:64:7)
#3      ResolverVisitor.visitBinaryExpression (package:analyzer/src/generated/resolver.dart:2059:31)
#4      BinaryExpressionImpl.resolveExpression (package:analyzer/src/dart/ast/ast.dart:1946:14)
#5      ResolverVisitor.dispatchExpression (package:analyzer/src/generated/resolver.dart:748:16)
#6      TypeAnalyzer.analyzeExpression (package:_fe_analyzer_shared/src/type_inference/type_analyzer.dart:547:9)
#7      AstResolver.resolveExpression (package:analyzer/src/summary2/ast_resolver.dart:113:22)
#8      _PropertyInducingElementTypeInference.perform (package:analyzer/src/summary2/top_level_inference.dart:263:17)
#9      PropertyInducingElementImpl.type (package:analyzer/src/dart/element/element.dart:6735:28)
#10     _InitializerInference.perform (package:analyzer/src/summary2/top_level_inference.dart:153:15)
#11     TopLevelInference.infer (package:analyzer/src/summary2/top_level_inference.dart:106:26)
#12     Linker._performTopLevelInference (package:analyzer/src/summary2/link.dart:424:29)
#13     Linker._buildOutlines (package:analyzer/src/summary2/link.dart:268:5)
<asynchronous suspension>
#14     Linker.link.<anonymous closure> (package:analyzer/src/summary2/link.dart:123:7)
<asynchronous suspension>
#15     OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:174:14)
<asynchronous suspension>
#16     Linker.link (package:analyzer/src/summary2/link.dart:122:5)
<asynchronous suspension>
#17     link (package:analyzer/src/summary2/link.dart:41:3)
<asynchronous suspension>
#18     LibraryContext.load.loadBundle.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:211:22)
<asynchronous suspension>
#19     OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:174:14)
<asynchronous suspension>
#20     LibraryContext.load.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:208:24)
<asynchronous suspension>
#21     LibraryContext.load.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:296:7)
<asynchronous suspension>
#22     PerformanceLog.runAsync (package:analyzer/src/dart/analysis/performance_logger.dart:50:14)
<asynchronous suspension>
#23     LibraryContext.load (package:analyzer/src/dart/analysis/library_context.dart:287:5)
<asynchronous suspension>
#24     AnalysisDriver._produceErrors (package:analyzer/src/dart/analysis/driver.dart:1970:5)
<asynchronous suspension>
#25     AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1245:7)
<asynchronous suspension>
#26     AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2449:7)
<asynchronous suspension>


#0      LibraryContext._throwLibraryCycleLinkException (package:analyzer/src/dart/analysis/library_context.dart:425:5)
#1      LibraryContext.load.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:222:11)
<asynchronous suspension>
#2      LibraryContext.load.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:296:7)
<asynchronous suspension>
#3      PerformanceLog.runAsync (package:analyzer/src/dart/analysis/performance_logger.dart:50:14)
<asynchronous suspension>
#4      LibraryContext.load (package:analyzer/src/dart/analysis/library_context.dart:287:5)
<asynchronous suspension>
#5      AnalysisDriver._produceErrors (package:analyzer/src/dart/analysis/driver.dart:1970:5)
<asynchronous suspension>
#6      AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1245:7)
<asynchronous suspension>
#7      AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2449:7)
<asynchronous suspension>

Unhandled exception:
Null check operator used on a null value
#0      BinaryExpressionResolver._resolveUserDefinableAugmented (package:analyzer/src/dart/resolver/binary_expression_resolver.dart:342:55)
#1      BinaryExpressionResolver._resolveUserDefinable (package:analyzer/src/dart/resolver/binary_expression_resolver.dart:306:7)
#2      BinaryExpressionResolver.resolve (package:analyzer/src/dart/resolver/binary_expression_resolver.dart:64:7)
#3      ResolverVisitor.visitBinaryExpression (package:analyzer/src/generated/resolver.dart:2059:31)
#4      BinaryExpressionImpl.resolveExpression (package:analyzer/src/dart/ast/ast.dart:1946:14)
#5      ResolverVisitor.dispatchExpression (package:analyzer/src/generated/resolver.dart:748:16)
#6      TypeAnalyzer.analyzeExpression (package:_fe_analyzer_shared/src/type_inference/type_analyzer.dart:547:9)
#7      AstResolver.resolveExpression (package:analyzer/src/summary2/ast_resolver.dart:113:22)
#8      _PropertyInducingElementTypeInference.perform (package:analyzer/src/summary2/top_level_inference.dart:263:17)
#9      PropertyInducingElementImpl.type (package:analyzer/src/dart/element/element.dart:6735:28)
#10     _InitializerInference.perform (package:analyzer/src/summary2/top_level_inference.dart:153:15)
#11     TopLevelInference.infer (package:analyzer/src/summary2/top_level_inference.dart:106:26)
#12     Linker._performTopLevelInference (package:analyzer/src/summary2/link.dart:424:29)
#13     Linker._buildOutlines (package:analyzer/src/summary2/link.dart:268:5)
<asynchronous suspension>
#14     Linker.link.<anonymous closure> (package:analyzer/src/summary2/link.dart:123:7)
<asynchronous suspension>
#15     OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:174:14)
<asynchronous suspension>
#16     Linker.link (package:analyzer/src/summary2/link.dart:122:5)
<asynchronous suspension>
#17     link (package:analyzer/src/summary2/link.dart:41:3)
<asynchronous suspension>
#18     LibraryContext.load.loadBundle.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:211:22)
<asynchronous suspension>
#19     OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:174:14)
<asynchronous suspension>
#20     LibraryContext.load.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:208:24)
<asynchronous suspension>
#21     LibraryContext.load.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:296:7)
<asynchronous suspension>
#22     PerformanceLog.runAsync (package:analyzer/src/dart/analysis/performance_logger.dart:50:14)
<asynchronous suspension>
#23     LibraryContext.load (package:analyzer/src/dart/analysis/library_context.dart:287:5)
<asynchronous suspension>
#24     AnalysisDriver._produceErrors (package:analyzer/src/dart/analysis/driver.dart:1970:5)
<asynchronous suspension>
#25     AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1245:7)
<asynchronous suspension>
#26     AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2449:7)
<asynchronous suspension>


#0      LibraryContext._throwLibraryCycleLinkException (package:analyzer/src/dart/analysis/library_context.dart:425:5)
#1      LibraryContext.load.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:222:11)
<asynchronous suspension>
#2      LibraryContext.load.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:296:7)
<asynchronous suspension>
#3      PerformanceLog.runAsync (package:analyzer/src/dart/analysis/performance_logger.dart:50:14)
<asynchronous suspension>
#4      LibraryContext.load (package:analyzer/src/dart/analysis/library_context.dart:287:5)
<asynchronous suspension>
#5      AnalysisDriver._produceErrors (package:analyzer/src/dart/analysis/driver.dart:1970:5)
<asynchronous suspension>
#6      AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1245:7)
<asynchronous suspension>
#7      AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2449:7)
<asynchronous suspension>
Bad state: The analysis server crashed unexpectedly

The analysis server shut down unexpectedly.
Please report this at dartbug.com.

A variation of the program causes a spurious error:

int? j;
augment var j; // Error
augment var j = 4 + (augmented == null ? 2 : -2);
warning • n020.dart:2:13 • The type of j can't be inferred without either a
          type or initializer. Try specifying the type of the variable. •
          inference_failure_on_uninitialized_variable

The following variant is processed successfully:

int? j;
augment int? j;
augment var j = 4 + (augmented == null ? 2 : -2);
@eernstg eernstg added area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. type-bug Incorrect behavior (everything from a crash to more subtle misbehavior) feature-augmentations Implementation of the augmentations feature labels Jul 11, 2024
@keertip keertip added the P2 A bug or feature request we're likely to work on label Jul 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. feature-augmentations Implementation of the augmentations feature P2 A bug or feature request we're likely to work on type-bug Incorrect behavior (everything from a crash to more subtle misbehavior)
Projects
None yet
Development

No branches or pull requests

2 participants