Skip to content

Command-line analyzer outputs stacktrace for non-existent packages when package root in use  #23596

@stereotype441

Description

@stereotype441

Create a file "test1.dart" with the following contents:

import 'package:foobar/foobar.dart';

Also, create an empty folder called "package_root"

Now, from inside the folder containing both of these, run the command-line analyzer as follows:

.../dartanalyzer --package-root=package_root test1.dart

Expected result: there should be a single error and no other output:

Analyzing [test1.dart]...
[error] Target of URI does not exist: 'package:foobar/foobar.dart' (/Users/paulberry/tmp/test1.dart, line 1, col 8)
1 error found.

Observed result: a stack trace is also output:

Canonical failed: package_root/foobar
JavaIOException: IOException FileSystemException: Cannot resolve symbolic links, path = 'package_root/foobar' (OS Error: No such file or directory, errno = 2)
#0      JavaFile.getCanonicalPath (package:analyzer/src/generated/java_io.dart:48:7)
#1      JavaFile.getCanonicalFile (package:analyzer/src/generated/java_io.dart:43:47)
#2      PackageUriResolver.getCanonicalFile (package:analyzer/src/generated/source_io.dart:404:23)
#3      PackageUriResolver.resolveAbsolute (package:analyzer/src/generated/source_io.dart:458:9)
#4      SourceFactory._internalResolveUri (package:analyzer/src/generated/source.dart:759:32)
#5      SourceFactory.resolveUri (package:analyzer/src/generated/source.dart:710:14)
#6      ParseDartTask.resolveDirective (package:analyzer/src/generated/engine.dart:9480:35)
#7      ParseDartTask.internalPerform.<anonymous closure> (package:analyzer/src/generated/engine.dart:9423:39)
#8      _PerformanceTagImpl.makeCurrentWhile (package:analyzer/src/generated/utilities_general.dart:152:15)
#9      ParseDartTask.internalPerform (package:analyzer/src/generated/engine.dart:9408:33)
#10     AnalysisTask._safelyPerform (package:analyzer/src/generated/engine.dart:6414:7)
#11     AnalysisTask.perform (package:analyzer/src/generated/engine.dart:6387:7)
#12     AnalysisContextImpl._cacheDartParseData (package:analyzer/src/generated/engine.dart:2752:12)
#13     AnalysisContextImpl._getDartParseData (package:analyzer/src/generated/engine.dart:3345:17)
#14     AnalysisContextImpl.computeKindOf (package:analyzer/src/generated/engine.dart:1662:16)
#15     AnalyzerImpl._analyzeSync (package:analyzer_cli/src/analyzer_impl.dart:183:17)
#16     AnalyzerImpl.analyzeSync (package:analyzer_cli/src/analyzer_impl.dart:123:12)
#17     Driver._runAnalyzer (package:analyzer_cli/src/driver.dart:322:34)
#18     Driver._analyzeAll (package:analyzer_cli/src/driver.dart:122:30)
#19     Driver.start (package:analyzer_cli/src/driver.dart:76:7)
#20     main (file:///Users/paulberry/dart-new/sdk/third_party/pkg/analyzer_cli/bin/analyzer.dart:11:11)
#21     _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:259)
#22     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)

The problem seems to be related to the use of --package-root. If this parameter is dropped (causing analyzer to use pub list-package-dirs) then there is no stacktrace.

Filing under analyzer rather than analyzer_cli because I believe the problem is inside the analyzer itself.

Metadata

Metadata

Assignees

Labels

P1A high priority bug; for example, a single project is unusable or has many test failureslegacy-area-analyzerUse area-devexp instead.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions