| Index: pkg/analyzer/lib/src/context/context_factory.dart
|
| diff --git a/pkg/analyzer/lib/src/context/context_factory.dart b/pkg/analyzer/lib/src/context/context_factory.dart
|
| deleted file mode 100644
|
| index b96100d38f54073797064b90e2fbcf4d608d3e3b..0000000000000000000000000000000000000000
|
| --- a/pkg/analyzer/lib/src/context/context_factory.dart
|
| +++ /dev/null
|
| @@ -1,136 +0,0 @@
|
| -// Copyright (c) 2016, 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.
|
| -
|
| -library analyzer.src.context_factory;
|
| -
|
| -import 'dart:convert';
|
| -import 'dart:core' hide Resource;
|
| -
|
| -import 'package:analyzer/file_system/file_system.dart';
|
| -import 'package:analyzer/src/generated/sdk.dart';
|
| -import 'package:yaml/yaml.dart';
|
| -import 'package:analyzer/src/generated/engine.dart';
|
| -import 'dart:io' as io;
|
| -
|
| -/// (Placeholder)
|
| -abstract class ContextFactory {
|
| - /// Create an analysis context for the given [source] directory or file, with
|
| - /// the given [defaultOptions].
|
| - AnalysisContext createContext(
|
| - io.FileSystemEntity source, AnalysisOptions defaultOptions);
|
| -}
|
| -
|
| -/// Processes package maps, extracting SDK embedders and extenders, creating a
|
| -/// consolidated [libraryMap].
|
| -class PackageMapProcessor {
|
| - static const String _EMBEDDED_LIB_MAP_KEY = 'embedded_libs';
|
| - static const String _EMBEDDER_FILE_NAME = '_embedder.yaml';
|
| - static const String _SDK_EXT_NAME = '_sdkext';
|
| -
|
| - /// Map of processed embedder libraries.
|
| - final LibraryMap embeddedLibraries = new LibraryMap();
|
| -
|
| - /// Map of processed SDK extension libraries.
|
| - final LibraryMap extendedLibraries = new LibraryMap();
|
| -
|
| - /// Combined map of processed libraries.
|
| - LibraryMap get libraryMap {
|
| - LibraryMap libraryMap = new LibraryMap();
|
| -
|
| - // Add extenders first, allowing for overwrite by embedders who take precedence.
|
| - for (String uri in extendedLibraries.uris) {
|
| - libraryMap.setLibrary(uri, extendedLibraries.getLibrary(uri));
|
| - }
|
| - for (String uri in embeddedLibraries.uris) {
|
| - libraryMap.setLibrary(uri, embeddedLibraries.getLibrary(uri));
|
| - }
|
| - return libraryMap;
|
| - }
|
| -
|
| - /// Create a processor for the given [packageMap].
|
| - PackageMapProcessor(Map<String, List<Folder>> packageMap) {
|
| - packageMap?.forEach(_processPackage);
|
| - }
|
| -
|
| - /// Whether the package map contains an SDK embedder.
|
| - bool get hasEmbedder => embeddedLibraries.size() > 0;
|
| -
|
| - /// Whether the package map contains an SDK extension.
|
| - bool get hasSdkExtension => extendedLibraries.size() > 0;
|
| -
|
| - void _processEmbedderYaml(String embedderYaml, Folder libDir) {
|
| - try {
|
| - YamlNode map = loadYaml(embedderYaml);
|
| - if (map is YamlMap) {
|
| - YamlNode embedded_libs = map[_EMBEDDED_LIB_MAP_KEY];
|
| - if (embedded_libs is YamlMap) {
|
| - embedded_libs.forEach(
|
| - (k, v) => _processMapping(embeddedLibraries, k, v, libDir));
|
| - }
|
| - }
|
| - } catch (_) {
|
| - // Ignored.
|
| - }
|
| - }
|
| -
|
| - void _processMapping(
|
| - LibraryMap libraryMap, String name, String file, Folder libDir) {
|
| - if (!_hasDartPrefix(name)) {
|
| - // SDK libraries must begin with 'dart:'.
|
| - return;
|
| - }
|
| - if (libraryMap.getLibrary(name) != null) {
|
| - // Libraries can't be redefined.
|
| - return;
|
| - }
|
| - String libPath = libDir.canonicalizePath(file);
|
| - SdkLibraryImpl library = new SdkLibraryImpl(name)..path = libPath;
|
| - libraryMap.setLibrary(name, library);
|
| - }
|
| -
|
| - void _processPackage(String name, List<Folder> libDirs) {
|
| - for (Folder libDir in libDirs) {
|
| - String embedderYaml = _readEmbedderYaml(libDir);
|
| - if (embedderYaml != null) {
|
| - _processEmbedderYaml(embedderYaml, libDir);
|
| - }
|
| - String sdkExt = _readDotSdkExt(libDir);
|
| - if (sdkExt != null) {
|
| - _processSdkExt(sdkExt, libDir);
|
| - }
|
| - }
|
| - }
|
| -
|
| - void _processSdkExt(String sdkExtJSON, Folder libDir) {
|
| - try {
|
| - var sdkExt = JSON.decode(sdkExtJSON);
|
| - if (sdkExt is Map) {
|
| - sdkExt.forEach(
|
| - (k, v) => _processMapping(extendedLibraries, k, v, libDir));
|
| - }
|
| - } catch (_) {
|
| - // Ignored.
|
| - }
|
| - }
|
| -
|
| - static bool _hasDartPrefix(String uri) =>
|
| - uri.startsWith(DartSdk.DART_LIBRARY_PREFIX);
|
| -
|
| - static String _readDotSdkExt(Folder libDir) =>
|
| - _safeRead(libDir.getChild(_SDK_EXT_NAME));
|
| -
|
| - static String _readEmbedderYaml(Folder libDir) =>
|
| - _safeRead(libDir.getChild(_EMBEDDER_FILE_NAME));
|
| -
|
| - static String _safeRead(Resource file) {
|
| - try {
|
| - if (file is File) {
|
| - return file.readAsStringSync();
|
| - }
|
| - } on FileSystemException {
|
| - // File can't be read.
|
| - }
|
| - return null;
|
| - }
|
| -}
|
|
|