| // 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); |
| } |