blob: bd0e1606ebf6ceb18a5664f2e466d42258184d2e [file] [log] [blame]
// Copyright (c) 2019, 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/dart/analysis/session.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/generated/engine.dart' as engine;
import 'package:analyzer/src/summary2/reference.dart';
import 'package:analyzer/src/test_utilities/test_library_builder.dart';
const _sdkSpec = {
'dart:core': LibrarySpec(
uri: 'dart:core',
classes: [
ClassSpec(
name: 'bool',
supertype: 'Object',
constructors: [
ConstructorSpec(
name: 'fromEnvironment',
formalParameters: 'String name, {bool defaultValue}',
isConst: true,
isFactory: true,
),
],
),
ClassSpec(name: 'double', supertype: 'num'),
ClassSpec(
name: 'int',
supertype: 'num',
constructors: [
ConstructorSpec(
name: 'fromEnvironment',
formalParameters: 'String name, {int defaultValue}',
isConst: true,
isFactory: true,
),
],
),
ClassSpec(
name: 'num',
supertype: 'Object',
interfaces: ['Comparable<num>'],
),
ClassSpec(name: 'Comparable', typeParameters: ['T'], isAbstract: true),
ClassSpec(name: 'Function', isAbstract: true, supertype: 'Object'),
ClassSpec(
name: 'Iterable',
typeParameters: ['E'],
isAbstract: true,
supertype: 'Object',
),
ClassSpec(
name: 'Iterator',
typeParameters: ['E'],
isAbstract: true,
supertype: 'Object',
),
ClassSpec(
name: 'List',
typeParameters: ['E'],
isAbstract: true,
supertype: 'Object',
interfaces: ['Iterable<E>'],
),
ClassSpec(
name: 'Map',
typeParameters: ['K', 'V'],
isAbstract: true,
supertype: 'Object',
),
ClassSpec(name: 'Null', supertype: 'Object'),
ClassSpec(
name: 'Object',
methods: [
MethodSpec(name: 'toString', returnType: 'String'),
MethodSpec(
name: '==',
returnType: 'bool',
formalParameters: 'Object other',
),
],
),
ClassSpec(name: 'Record', isAbstract: true, supertype: 'Object'),
ClassSpec(
name: 'Set',
typeParameters: ['E'],
isAbstract: true,
supertype: 'Object',
interfaces: ['Iterable<E>'],
),
ClassSpec(
name: 'String',
supertype: 'Object',
constructors: [
ConstructorSpec(
name: 'fromEnvironment',
formalParameters: 'String name, {String defaultValue}',
isConst: true,
isFactory: true,
),
],
methods: [
MethodSpec(name: 'toLowerCase', returnType: 'String'),
MethodSpec(
name: '+',
returnType: 'String',
formalParameters: 'String other',
),
],
),
ClassSpec(
name: 'Symbol',
isAbstract: true,
supertype: 'Object',
constructors: [
ConstructorSpec(
isConst: true,
isFactory: true,
formalParameters: 'String name',
),
],
),
ClassSpec(name: 'Type', isAbstract: true, supertype: 'Object'),
],
),
'dart:async': LibrarySpec(
uri: 'dart:async',
classes: [
ClassSpec(
name: 'Future',
typeParameters: ['T'],
isAbstract: true,
supertype: 'Object',
),
ClassSpec(name: 'FutureOr', typeParameters: ['T'], supertype: 'Object'),
],
),
};
class MockSdkElements {
final LibraryElementImpl coreLibrary;
final LibraryElementImpl asyncLibrary;
factory MockSdkElements(
engine.AnalysisContext analysisContext,
Reference rootReference,
AnalysisSessionImpl analysisSession,
) {
var libraries = buildLibrariesFromSpec(
analysisContext,
rootReference,
analysisSession,
_sdkSpec,
);
return MockSdkElements._(
coreLibrary: libraries['dart:core']!,
asyncLibrary: libraries['dart:async']!,
);
}
MockSdkElements._({required this.coreLibrary, required this.asyncLibrary});
}