| // Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| import 'package:analyzer/src/generated/source.dart'; | |
| import 'package:analyzer/src/summary/package_bundle_reader.dart'; | |
| import 'package:path/path.dart'; | |
| String fileUriToNormalizedPath(Context context, Uri fileUri) { | |
| assert(fileUri.isScheme('file')); | |
| var path = context.fromUri(fileUri); | |
| path = context.normalize(path); | |
| return path; | |
| } | |
| /// Return the canonical URI for the given [absoluteUri], for example a `file` | |
| /// URI to the corresponding `package` URI. If the URI is not valid, so does | |
| /// not represent a valid file path, return `null`. | |
| Uri? rewriteToCanonicalUri(SourceFactory sourceFactory, Uri absoluteUri) { | |
| var source = sourceFactory.forUri2(absoluteUri); | |
| if (source == null) { | |
| return null; | |
| } | |
| if (source is InSummarySource) { | |
| return source.uri; | |
| } | |
| return sourceFactory.pathToUri(source.fullName); | |
| } |