Issue with non escaping characters #60710
Labels
area-dart-model
For issues related to conformance to the language spec in the parser, compilers or the CLI analyzer.
model-crashes
Crashes in the analyzer or CFE
model-error-recovery
Error recovery in analyzer/CFE.
model-parser
Parser issues in the analyzer/CFE
The Dart analysis server crashes (exit code 255) instead of reporting a syntax error when encountering an unescaped apostrophe in a string literal immediately followed by the tokens Do (capital D, lower-case o) and or. This appears to be a lexing/parsing bug: after the unescaped apostrophe the analyzer mis-tokenizes Do and or as keywords, then fails deep inside DependencyWalker.
Here is the code that reproduces this issue, it can be also reproduced through dart.dev website:
void main() {
final a = 1;
final text = switch (a){
1=> 'You're planning to Do something or',
}
}
Dart SDK: 3.6.1
Error stack trace:
Internal error: Null check operator used on a null value
#0 LegacyAnalysisServer.sendServerErrorNotification (package:analysis_server/src/legacy_analysis_server.dart:714:31)
#1 ErrorNotifier.logException (package:analysis_server/src/server/error_notifier.dart:45:12)
#2 MulticastInstrumentationService.logException (package:analyzer/instrumentation/multicast_service.dart:28:15)
#3 Driver._captureExceptions.errorFunction (package:analysis_server/src/server/driver.dart:528:15)
#4 _Zone._processUncaughtError (dart:async/zone.dart:1097:14)
#5 _CustomZone.handleUncaughtError (dart:async/zone.dart:1301:5)
#6 Future._propagateToListeners (dart:async/future_impl.dart:816:16)
#7 Future._completeError (dart:async/future_impl.dart:715:5)
Unhandled exception:
Null check operator used on a null value
#0 Parser._attemptPrecedenceLevelRecovery (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6162:55)
#1 Parser._parsePrecedenceExpressionLoop (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6146:11)
#2 Parser.parsePrecedenceExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5917:12)
#3 Parser.parseExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5833:15)
#4 Parser.parseSwitchExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:10402:17)
#5 Parser.parsePrimary (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6647:16)
#6 Parser.parseUnaryExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6450:12)
#7 Parser.parsePrecedenceExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5893:13)
#8 Parser.parseExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5833:15)
#9 Parser.parseArgumentsRest (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7804:15)
#10 Parser.parseArguments (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7779:12)
#11 Parser.parseArgumentsOpt (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7760:14)
#12 Parser.parseSend (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7699:13)
#13 Parser.parseSendOrFunctionLiteral (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7206:12)
#14 Parser.parsePrimary (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6559:14)
#15 Parser.parseUnaryExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6450:12)
#16 Parser.parsePrecedenceExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5893:13)
#17 Parser.parseExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5833:15)
#18 Parser.parseLiteralListSuffix (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6944:19)
#19 Parser.parsePrimary (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6672:14)
#20 Parser.parseUnaryExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6450:12)
#21 Parser.parsePrecedenceExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5893:13)
#22 Parser.parseExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5833:15)
#23 Parser.parseArgumentsRest (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7804:15)
#24 Parser.parseArguments (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7779:12)
#25 Parser.parseArgumentsOpt (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7760:14)
#26 Parser.parseSend (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7699:13)
#27 Parser.parseSendOrFunctionLiteral (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7206:12)
#28 Parser.parsePrimary (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6559:14)
#29 Parser.parseUnaryExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6450:12)
#30 Parser.parsePrecedenceExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5893:13)
#31 Parser.parseExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5833:15)
#32 Parser.parseReturnStatement (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5735:13)
#33 Parser.parseStatementX (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5611:14)
#34 Parser.parseStatement (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5584:20)
#35 Parser.parseFunctionBody (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5489:15)
#36 Parser.parseAsyncOptBody (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5314:13)
#37 Parser.parseFunctionExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5243:13)
#38 Parser.parseParenthesizedExpressionFunctionLiteralOrRecordLiteral (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6697:16)
#39 Parser.parsePrimary (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6667:14)
#40 Parser.parseUnaryExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6450:12)
#41 Parser.parsePrecedenceExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5893:13)
#42 Parser.parseExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5833:15)
#43 Parser.parseArgumentsRest (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7804:15)
#44 Parser.parseArguments (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7779:12)
#45 Parser.parseArgumentsOpt (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7760:14)
#46 Parser.parseSend (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7699:13)
#47 Parser.parseSendOrFunctionLiteral (package:_fe_analyzer_shared/src/parser/parser_impl.dart:7206:12)
#48 Parser.parsePrimary (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6559:14)
#49 Parser.parseUnaryExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:6450:12)
#50 Parser.parsePrecedenceExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5893:13)
#51 Parser.parseExpression (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5833:15)
#52 Parser.parseReturnStatement (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5735:13)
#53 Parser.parseStatementX (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5611:14)
#54 Parser.parseStatement (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5584:20)
#55 Parser.parseFunctionBody (package:_fe_analyzer_shared/src/parser/parser_impl.dart:5489:15)
#56 Parser.parseMethod (package:_fe_analyzer_shared/src/parser/parser_impl.dart:4982:15)
#57 Parser.parseClassOrMixinOrExtensionOrEnumMemberImpl (package:_fe_analyzer_shared/src/parser/parser_impl.dart:4766:15)
#58 Parser.parseClassOrMixinOrExtensionBody (package:_fe_analyzer_shared/src/parser/parser_impl.dart:4383:15)
#59 Parser.parseClass (package:_fe_analyzer_shared/src/parser/parser_impl.dart:2724:13)
#60 Parser.parseClassOrNamedMixinApplication (package:_fe_analyzer_shared/src/parser/parser_impl.dart:2682:14)
#61 Parser._handleModifiersForClassDeclaration (package:_fe_analyzer_shared/src/parser/parser_impl.dart:832:12)
#62 Parser.parseTopLevelKeywordDeclaration (package:_fe_analyzer_shared/src/parser/parser_impl.dart:670:14)
#63 Parser.parseTopLevelDeclarationImpl (package:_fe_analyzer_shared/src/parser/parser_impl.dart:543:14)
#64 Parser.parseUnit (package:_fe_analyzer_shared/src/parser/parser_impl.dart:421:15)
#65 Parser.parseCompilationUnit2 (package:analyzer/src/generated/parser.dart:97:32)
#66 Parser.parseCompilationUnit (package:analyzer/src/generated/parser.dart:93:12)
#67 FileState.parseCode. (package:analyzer/src/dart/analysis/file_state.dart:681:25)
#68 OperationPerformanceImpl.run (package:analyzer/src/util/performance/operation_performance.dart:155:23)
#69 FileState.parseCode (package:analyzer/src/dart/analysis/file_state.dart:660:24)
#70 FileState.getParsed (package:analyzer/src/dart/analysis/file_state.dart:617:16)
#71 FileState._getUnlinkedUnit (package:analyzer/src/dart/analysis/file_state.dart:886:16)
#72 FileState.refresh. (package:analyzer/src/dart/analysis/file_state.dart:734:29)
#73 OperationPerformanceImpl.run (package:analyzer/src/util/performance/operation_performance.dart:155:23)
#74 FileState.refresh (package:analyzer/src/dart/analysis/file_state.dart:733:17)
#75 FileSystemState._newFile. (package:analyzer/src/dart/analysis/file_state.dart:1669:12)
#76 OperationPerformanceImpl.run (package:analyzer/src/util/performance/operation_performance.dart:155:23)
#77 FileSystemState._newFile (package:analyzer/src/dart/analysis/file_state.dart:1668:17)
#78 FileSystemState.getFileForUri (package:analyzer/src/dart/analysis/file_state.dart:1513:14)
#79 FileState._buildDirectiveUri (package:analyzer/src/dart/analysis/file_state.dart:817:34)
#80 FileState._buildConfigurableDirectiveUris (package:analyzer/src/dart/analysis/file_state.dart:782:22)
#81 FileKind.libraryExports. (package:analyzer/src/dart/analysis/file_state.dart:236:23)
#82 MappedListIterable.elementAt (dart:_internal/iterable.dart:435:31)
#83 ListIterator.moveNext (dart:_internal/iterable.dart:364:26)
#84 new _List._ofEfficientLengthIterable (dart:core-patch/array.dart:163:27)
#85 new _List.of (dart:core-patch/array.dart:128:20)
#86 new List.of (dart:core-patch/array_patch.dart:39:50)
#87 ListIterable.toList (dart:_internal/iterable.dart:224:7)
#88 IterableExtension.toFixedList (package:analyzer/src/utilities/extensions/collection.dart:22:12)
#89 FileKind.libraryExports (package:analyzer/src/dart/analysis/file_state.dart:275:8)
#90 _LibraryNode.computeDependencies. (package:analyzer/src/dart/analysis/library_graph.dart:195:25)
#91 MappedListIterable.elementAt (dart:_internal/iterable.dart:435:31)
#92 ListIterator.moveNext (dart:_internal/iterable.dart:364:26)
#93 IterableIterableExtension.flattenedToList (package:collection/src/iterable_extensions.dart:903:32)
#94 _LibraryNode.computeDependencies (package:analyzer/src/dart/analysis/library_graph.dart:200:10)
#95 Node.getDependencies (package:_fe_analyzer_shared/src/util/dependency_walker.dart:150:40)
#96 DependencyWalker.walk.strongConnect (package:_fe_analyzer_shared/src/util/dependency_walker.dart:55:40)
#97 DependencyWalker.walk.strongConnect (package:_fe_analyzer_shared/src/util/dependency_walker.dart:68:11)
#98 DependencyWalker.walk.strongConnect (package:_fe_analyzer_shared/src/util/dependency_walker.dart:68:11)
#99 DependencyWalker.walk.strongConnect (package:_fe_analyzer_shared/src/util/dependency_walker.dart:68:11)
#100 DependencyWalker.walk.strongConnect (package:_fe_analyzer_shared/src/util/dependency_walker.dart:68:11)
#101 DependencyWalker.walk.strongConnect (package:_fe_analyzer_shared/src/util/dependency_walker.dart:68:11)
#102 DependencyWalker.walk.strongConnect (package:_fe_analyzer_shared/src/util/dependency_walker.dart:68:11)
#103 DependencyWalker.walk.strongConnect (package:_fe_analyzer_shared/src/util/dependency_walker.dart:68:11)
#104 DependencyWalker.walk.strongConnect (package:_fe_analyzer_shared/src/util/dependency_walker.dart:68:11)
#105 DependencyWalker.walk.strongConnect (package:_fe_analyzer_shared/src/util/dependency_walker.dart:68:11)
#106 DependencyWalker.walk (package:_fe_analyzer_shared/src/util/dependency_walker.dart:121:5)
#107 computeLibraryCycle (package:analyzer/src/dart/analysis/library_graph.dart:20:17)
#108 LibraryFileKind.libraryCycle (package:analyzer/src/dart/analysis/file_state.dart:1953:7)
#109 LibraryContext.load.. (package:analyzer/src/dart/analysis/library_context.dart:277:32)
#110 OperationPerformanceImpl.run (package:analyzer/src/util/performance/operation_performance.dart:155:23)
#111 LibraryContext.load. (package:analyzer/src/dart/analysis/library_context.dart:274:38)
#112 PerformanceLog.runAsync (package:analyzer/src/dart/analysis/performance_logger.dart:50:21)
#113 LibraryContext.load (package:analyzer/src/dart/analysis/library_context.dart:273:18)
#114 AnalysisDriver._produceErrors (package:analyzer/src/dart/analysis/driver.dart:1967:26)
#115 AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1252:13)
#116 AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2446:24)
The text was updated successfully, but these errors were encountered: