| Index: packages/smoke/test/codegen/recorder_test.dart
|
| diff --git a/packages/smoke/test/codegen/recorder_test.dart b/packages/smoke/test/codegen/recorder_test.dart
|
| deleted file mode 100644
|
| index f4c777a55dcc93fb3f0a11bf9932e9fe2633eaa1..0000000000000000000000000000000000000000
|
| --- a/packages/smoke/test/codegen/recorder_test.dart
|
| +++ /dev/null
|
| @@ -1,780 +0,0 @@
|
| -// Copyright (c) 2014, 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 smoke.test.codegen.recorder_test;
|
| -
|
| -import 'package:analyzer/src/generated/element.dart';
|
| -import 'package:smoke/codegen/generator.dart';
|
| -import 'package:smoke/codegen/recorder.dart';
|
| -import 'package:test/test.dart';
|
| -
|
| -import 'common.dart' show checkResults;
|
| -import 'testing_resolver_utils.dart' show initAnalyzer;
|
| -
|
| -main() {
|
| - var provider = initAnalyzer(_SOURCES);
|
| - var generator;
|
| - var recorder;
|
| - setUp(() {
|
| - generator = new SmokeCodeGenerator();
|
| - recorder = new Recorder(generator, resolveImportUrl);
|
| - });
|
| -
|
| - group('parents', () {
|
| - test('simple subclassing', () {
|
| - var lib = provider.libraryFor('/a.dart');
|
| - recorder.lookupParent(lib.getType('A'));
|
| - recorder.lookupParent(lib.getType('C'));
|
| -
|
| - checkResults(generator,
|
| - imports: [
|
| - "import '/a.dart' as smoke_0;",
|
| - "import '/b.dart' as smoke_1;",
|
| - ],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' parents: {\n'
|
| - ' smoke_0.A: smoke_1.B,\n'
|
| - ' smoke_0.C: smoke_0.A,\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('single mixin', () {
|
| - var lib = provider.libraryFor('/a.dart');
|
| - recorder.lookupParent(lib.getType('E'));
|
| -
|
| - checkResults(generator,
|
| - imports: ["import '/a.dart' as smoke_0;",],
|
| - topLevel: 'abstract class _M0 {} // A & D1\n',
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' parents: {\n'
|
| - ' smoke_0.E: _M0,\n'
|
| - ' _M0: smoke_0.A,\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('multiple mixins', () {
|
| - var lib = provider.libraryFor('/a.dart');
|
| - recorder.lookupParent(lib.getType('F'));
|
| -
|
| - checkResults(generator,
|
| - imports: ["import '/a.dart' as smoke_0;",],
|
| - topLevel: 'abstract class _M0 {} // A & D1\n'
|
| - 'abstract class _M1 {} // _M0 & D2\n'
|
| - 'abstract class _M2 {} // _M1 & D3\n',
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' parents: {\n'
|
| - ' smoke_0.F: _M2,\n'
|
| - ' _M0: smoke_0.A,\n'
|
| - ' _M1: _M0,\n'
|
| - ' _M2: _M1,\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('same as common_test', () {
|
| - var lib = provider.libraryFor('/common.dart');
|
| - recorder.lookupParent(lib.getType('Annot'));
|
| - recorder.lookupParent(lib.getType('AnnotB'));
|
| - recorder.lookupParent(lib.getType('A'));
|
| - recorder.lookupParent(lib.getType('B'));
|
| - recorder.lookupParent(lib.getType('C'));
|
| - recorder.lookupParent(lib.getType('D'));
|
| - recorder.lookupParent(lib.getType('E'));
|
| - recorder.lookupParent(lib.getType('E2'));
|
| - recorder.lookupParent(lib.getType('F'));
|
| - recorder.lookupParent(lib.getType('F2'));
|
| - recorder.lookupParent(lib.getType('G'));
|
| - recorder.lookupParent(lib.getType('H'));
|
| - var coreLib =
|
| - lib.visibleLibraries.firstWhere((l) => l.displayName == 'dart.core');
|
| - recorder.lookupParent(coreLib.getType('int'));
|
| - recorder.lookupParent(coreLib.getType('num'));
|
| -
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - topLevel: 'abstract class _M0 {} // C & A\n',
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' parents: {\n'
|
| - ' smoke_0.AnnotB: smoke_0.Annot,\n'
|
| - ' smoke_0.D: _M0,\n'
|
| - ' smoke_0.E2: smoke_0.E,\n'
|
| - ' smoke_0.F2: smoke_0.F,\n'
|
| - ' smoke_0.H: smoke_0.G,\n'
|
| - ' int: num,\n'
|
| - ' _M0: smoke_0.C,\n'
|
| - ' }));\n');
|
| - });
|
| - });
|
| -
|
| - test('add static method, no declaration', () {
|
| - var lib = provider.libraryFor('/common.dart');
|
| - recorder.addStaticMethod(lib.getType('A'), 'sM');
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' staticMethods: {\n'
|
| - ' smoke_0.A: {\n'
|
| - ' #sM: smoke_0.A.sM,\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - group('lookup member', () {
|
| - var lib;
|
| - setUp(() {
|
| - lib = provider.libraryFor('/common.dart');
|
| - });
|
| -
|
| - test('missing declaration', () {
|
| - recorder.lookupMember(lib.getType('A'), 'q', includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.A: {},\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('field declaration', () {
|
| - recorder.lookupMember(lib.getType('A'), 'i', includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.A: {\n'
|
| - ' #i: const Declaration(#i, int),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('sattic field declaration', () {
|
| - recorder.lookupMember(lib.getType('A'), 'sI', includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.A: {\n'
|
| - ' #sI: const Declaration(#sI, int, isStatic: true),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('property declaration', () {
|
| - recorder.lookupMember(lib.getType('A'), 'j2', includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.A: {\n'
|
| - ' #j2: const Declaration(#j2, int, kind: PROPERTY),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('static property declaration', () {
|
| - recorder.lookupMember(lib.getType('A'), 'sJ', includeAccessors: false);
|
| - final details = 'kind: PROPERTY, isFinal: true, isStatic: true';
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.A: {\n'
|
| - ' #sJ: const Declaration(#sJ, int, $details),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('field and property of dynamic type', () {
|
| - recorder.lookupMember(lib.getType('I'), 'i1', includeAccessors: false);
|
| - recorder.lookupMember(lib.getType('I'), 'i2', includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.I: {\n'
|
| - ' #i1: const Declaration(#i1, Object),\n'
|
| - ' #i2: const Declaration(#i2, Object, kind: PROPERTY),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('property of concrete type', () {
|
| - recorder.lookupMember(lib.getType('I'), 'i3', includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.I: {\n'
|
| - ' #i3: const Declaration(#i3, smoke_0.G, kind: PROPERTY, '
|
| - 'isFinal: true),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('method declaration', () {
|
| - recorder.lookupMember(lib.getType('A'), 'inc0', includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.A: {\n'
|
| - ' #inc0: const Declaration(#inc0, Function, kind: METHOD),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('static method declaration', () {
|
| - recorder.lookupMember(lib.getType('A'), 'sM', includeAccessors: false);
|
| - const details = 'kind: METHOD, isStatic: true';
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.A: {\n'
|
| - ' #sM: const Declaration(#sM, Function, $details),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('inherited field - not recursive', () {
|
| - recorder.lookupMember(lib.getType('D'), 'i', includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.D: {},\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('inherited field - recursive', () {
|
| - recorder.lookupMember(lib.getType('D'), 'i',
|
| - recursive: true, includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - topLevel: 'abstract class _M0 {} // C & A\n',
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' parents: {\n'
|
| - ' smoke_0.D: _M0,\n'
|
| - ' _M0: smoke_0.C,\n'
|
| - ' },\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.D: {},\n'
|
| - ' _M0: {\n'
|
| - ' #i: const Declaration(#i, int),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('inherited field - recursive deep', () {
|
| - recorder.lookupMember(lib.getType('J3'), 'i',
|
| - recursive: true, includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' parents: {\n'
|
| - ' smoke_0.J2: smoke_0.J1,\n'
|
| - ' smoke_0.J3: smoke_0.J2,\n'
|
| - ' },\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.J1: {\n'
|
| - ' #i: const Declaration(#i, int),\n'
|
| - ' },\n'
|
| - ' smoke_0.J2: {},\n'
|
| - ' smoke_0.J3: {},\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('inherited field - recursive - includeUpTo', () {
|
| - recorder.lookupMember(lib.getType('J3'), 'i',
|
| - recursive: true,
|
| - includeAccessors: false,
|
| - includeUpTo: lib.getType('J1'));
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' parents: {\n'
|
| - ' smoke_0.J2: smoke_0.J1,\n'
|
| - ' smoke_0.J3: smoke_0.J2,\n'
|
| - ' },\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.J2: {},\n'
|
| - ' smoke_0.J3: {},\n'
|
| - ' }));\n');
|
| - });
|
| - });
|
| -
|
| - group('query', () {
|
| - test('default query', () {
|
| - var options = new QueryOptions();
|
| - var lib = provider.libraryFor('/common.dart');
|
| - recorder.runQuery(lib.getType('A'), options, includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.A: {\n'
|
| - ' #i: const Declaration(#i, int),\n'
|
| - ' #j: const Declaration(#j, int),\n'
|
| - ' #j2: const Declaration(#j2, int, kind: PROPERTY),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('only fields', () {
|
| - var options = new QueryOptions(includeProperties: false);
|
| - var lib = provider.libraryFor('/common.dart');
|
| - recorder.runQuery(lib.getType('A'), options, includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.A: {\n'
|
| - ' #i: const Declaration(#i, int),\n'
|
| - ' #j: const Declaration(#j, int),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('only properties', () {
|
| - var options = new QueryOptions(includeFields: false);
|
| - var lib = provider.libraryFor('/common.dart');
|
| - recorder.runQuery(lib.getType('A'), options, includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.A: {\n'
|
| - ' #j2: const Declaration(#j2, int, kind: PROPERTY),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('fields, properties, and and methods', () {
|
| - var options = new QueryOptions(includeMethods: true);
|
| - var lib = provider.libraryFor('/common.dart');
|
| - recorder.runQuery(lib.getType('A'), options, includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.A: {\n'
|
| - ' #i: const Declaration(#i, int),\n'
|
| - ' #inc0: const Declaration(#inc0, Function, kind: METHOD),\n'
|
| - ' #inc1: const Declaration(#inc1, Function, kind: METHOD),\n'
|
| - ' #inc2: const Declaration(#inc2, Function, kind: METHOD),\n'
|
| - ' #j: const Declaration(#j, int),\n'
|
| - ' #j2: const Declaration(#j2, int, kind: PROPERTY),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('exclude inherited', () {
|
| - var options = new QueryOptions(includeInherited: false);
|
| - var lib = provider.libraryFor('/common.dart');
|
| - recorder.runQuery(lib.getType('D'), options, includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.D: {\n'
|
| - ' #i2: const Declaration(#i2, int, kind: PROPERTY, '
|
| - 'isFinal: true),\n'
|
| - ' #x2: const Declaration(#x2, int, kind: PROPERTY, '
|
| - 'isFinal: true),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('include inherited', () {
|
| - var options = new QueryOptions(includeInherited: true);
|
| - var lib = provider.libraryFor('/common.dart');
|
| - recorder.runQuery(lib.getType('D'), options, includeAccessors: false);
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - topLevel: 'abstract class _M0 {} // C & A\n',
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' parents: {\n'
|
| - ' smoke_0.D: _M0,\n'
|
| - ' _M0: smoke_0.C,\n'
|
| - ' },\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.C: {\n'
|
| - ' #b: const Declaration(#b, smoke_0.B),\n'
|
| - ' #x: const Declaration(#x, int),\n'
|
| - ' #y: const Declaration(#y, String),\n'
|
| - ' },\n'
|
| - ' smoke_0.D: {\n'
|
| - ' #i2: const Declaration(#i2, int, kind: PROPERTY, '
|
| - 'isFinal: true),\n'
|
| - ' #x2: const Declaration(#x2, int, kind: PROPERTY, '
|
| - 'isFinal: true),\n'
|
| - ' },\n'
|
| - ' _M0: {\n'
|
| - ' #i: const Declaration(#i, int),\n'
|
| - ' #j: const Declaration(#j, int),\n'
|
| - ' #j2: const Declaration(#j2, int, kind: PROPERTY),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('exact annotation', () {
|
| - var lib = provider.libraryFor('/common.dart');
|
| - var vars = lib.definingCompilationUnit.topLevelVariables;
|
| - expect(vars[0].name, 'a1');
|
| - var options =
|
| - new QueryOptions(includeInherited: true, withAnnotations: [vars[0]]);
|
| - recorder.runQuery(lib.getType('H'), options, includeAccessors: false);
|
| - final annot = 'annotations: const [smoke_0.a1]';
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' parents: {\n'
|
| - ' smoke_0.H: smoke_0.G,\n'
|
| - ' },\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.G: {\n'
|
| - ' #b: const Declaration(#b, int, $annot),\n'
|
| - ' },\n'
|
| - ' smoke_0.H: {\n'
|
| - ' #f: const Declaration(#f, int, $annot),\n'
|
| - ' #g: const Declaration(#g, int, $annot),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('type annotation', () {
|
| - var lib = provider.libraryFor('/common.dart');
|
| - var options = new QueryOptions(
|
| - includeInherited: true, withAnnotations: [lib.getType('Annot')]);
|
| - recorder.runQuery(lib.getType('H'), options, includeAccessors: false);
|
| - final a1Annot = 'annotations: const [smoke_0.a1]';
|
| - final a3Annot = 'annotations: const [smoke_0.a3]';
|
| - final exprAnnot = 'annotations: const [const smoke_0.Annot(1)]';
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' parents: {\n'
|
| - ' smoke_0.H: smoke_0.G,\n'
|
| - ' },\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.G: {\n'
|
| - ' #b: const Declaration(#b, int, $a1Annot),\n'
|
| - ' },\n'
|
| - ' smoke_0.H: {\n'
|
| - ' #f: const Declaration(#f, int, $a1Annot),\n'
|
| - ' #g: const Declaration(#g, int, $a1Annot),\n'
|
| - ' #i: const Declaration(#i, int, $a3Annot),\n'
|
| - ' #j: const Declaration(#j, int, $exprAnnot),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('type annotation with named arguments', () {
|
| - var lib = provider.libraryFor('/common.dart');
|
| - var options = new QueryOptions(
|
| - includeInherited: true, withAnnotations: [lib.getType('AnnotC')]);
|
| - recorder.runQuery(lib.getType('K'), options, includeAccessors: false);
|
| - final kAnnot = 'annotations: const [const smoke_0.AnnotC(named: true)]';
|
| - final k2Annot = 'annotations: const [const smoke_0.AnnotC()]';
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.K: {\n'
|
| - ' #k: const Declaration(#k, int, $kAnnot),\n'
|
| - ' #k2: const Declaration(#k2, int, $k2Annot),\n'
|
| - ' },\n'
|
| - ' }));\n');
|
| - });
|
| - });
|
| -
|
| - group('with accessors', () {
|
| - test('lookup member', () {
|
| - var lib = provider.libraryFor('/common.dart');
|
| - recorder.lookupMember(lib.getType('I'), 'i1');
|
| - recorder.lookupMember(lib.getType('I'), 'i2');
|
| - recorder.lookupMember(lib.getType('I'), 'i3');
|
| - recorder.lookupMember(lib.getType('I'), 'm4');
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' getters: {\n'
|
| - ' #i1: (o) => o.i1,\n'
|
| - ' #i2: (o) => o.i2,\n'
|
| - ' #i3: (o) => o.i3,\n'
|
| - ' #m4: (o) => o.m4,\n'
|
| - ' },\n'
|
| - ' setters: {\n' // #i3 is final
|
| - ' #i1: (o, v) { o.i1 = v; },\n'
|
| - ' #i2: (o, v) { o.i2 = v; },\n'
|
| - ' },\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.I: {\n'
|
| - ' #i1: const Declaration(#i1, Object),\n'
|
| - ' #i2: const Declaration(#i2, Object, kind: PROPERTY),\n'
|
| - ' #i3: const Declaration(#i3, smoke_0.G, kind: PROPERTY, '
|
| - 'isFinal: true),\n'
|
| - ' #m4: const Declaration(#m4, Function, kind: METHOD),\n'
|
| - ' },\n'
|
| - ' },\n'
|
| - ' names: {\n'
|
| - ' #i1: r\'i1\',\n'
|
| - ' #i2: r\'i2\',\n'
|
| - ' #i3: r\'i3\',\n'
|
| - ' #m4: r\'m4\',\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('static members', () {
|
| - var lib = provider.libraryFor('/common.dart');
|
| - recorder.lookupMember(lib.getType('A'), 'sI');
|
| - recorder.lookupMember(lib.getType('A'), 'sJ');
|
| - recorder.lookupMember(lib.getType('A'), 'sM');
|
| - final pDetails = 'kind: PROPERTY, isFinal: true, isStatic: true';
|
| - const mDetails = 'kind: METHOD, isStatic: true';
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.A: {\n'
|
| - ' #sI: const Declaration(#sI, int, isStatic: true),\n'
|
| - ' #sJ: const Declaration(#sJ, int, $pDetails),\n'
|
| - ' #sM: const Declaration(#sM, Function, $mDetails),\n'
|
| - ' },\n'
|
| - ' },\n'
|
| - ' staticMethods: {\n'
|
| - ' smoke_0.A: {\n'
|
| - ' #sM: smoke_0.A.sM,\n'
|
| - ' },\n'
|
| - ' },\n'
|
| - ' names: {\n'
|
| - ' #sM: r\'sM\',\n'
|
| - ' }));\n');
|
| - });
|
| -
|
| - test('query', () {
|
| - var lib = provider.libraryFor('/common.dart');
|
| - var options = new QueryOptions(
|
| - includeInherited: true, withAnnotations: [lib.getType('Annot')]);
|
| - recorder.runQuery(lib.getType('H'), options);
|
| - final a1Annot = 'annotations: const [smoke_0.a1]';
|
| - final a3Annot = 'annotations: const [smoke_0.a3]';
|
| - final exprAnnot = 'annotations: const [const smoke_0.Annot(1)]';
|
| - checkResults(generator,
|
| - imports: ["import '/common.dart' as smoke_0;",],
|
| - initCall: 'useGeneratedCode(new StaticConfiguration(\n'
|
| - ' checkedMode: false,\n'
|
| - ' getters: {\n'
|
| - ' #b: (o) => o.b,\n'
|
| - ' #f: (o) => o.f,\n'
|
| - ' #g: (o) => o.g,\n'
|
| - ' #i: (o) => o.i,\n'
|
| - ' #j: (o) => o.j,\n'
|
| - ' },\n'
|
| - ' setters: {\n' // #i3 is final
|
| - ' #b: (o, v) { o.b = v; },\n'
|
| - ' #f: (o, v) { o.f = v; },\n'
|
| - ' #g: (o, v) { o.g = v; },\n'
|
| - ' #i: (o, v) { o.i = v; },\n'
|
| - ' #j: (o, v) { o.j = v; },\n'
|
| - ' },\n'
|
| - ' parents: {\n'
|
| - ' smoke_0.H: smoke_0.G,\n'
|
| - ' },\n'
|
| - ' declarations: {\n'
|
| - ' smoke_0.G: {\n'
|
| - ' #b: const Declaration(#b, int, $a1Annot),\n'
|
| - ' },\n'
|
| - ' smoke_0.H: {\n'
|
| - ' #f: const Declaration(#f, int, $a1Annot),\n'
|
| - ' #g: const Declaration(#g, int, $a1Annot),\n'
|
| - ' #i: const Declaration(#i, int, $a3Annot),\n'
|
| - ' #j: const Declaration(#j, int, $exprAnnot),\n'
|
| - ' },\n'
|
| - ' },\n'
|
| - ' names: {\n'
|
| - ' #b: r\'b\',\n'
|
| - ' #f: r\'f\',\n'
|
| - ' #g: r\'g\',\n'
|
| - ' #i: r\'i\',\n'
|
| - ' #j: r\'j\',\n'
|
| - ' }));\n');
|
| - });
|
| - });
|
| -}
|
| -
|
| -const _SOURCES = const {
|
| - '/a.dart': '''
|
| - library a;
|
| - import '/b.dart';
|
| -
|
| - class Annot { const Annot(); }
|
| - const annot = const Annot();
|
| -
|
| - class A extends B {}
|
| - class C extends A {}
|
| - class D1 {
|
| - int d1;
|
| - }
|
| - class D2 {
|
| - int d2;
|
| - }
|
| - class D3 {
|
| - int d3;
|
| - }
|
| - class E extends A with D1 {
|
| - int e1;
|
| - }
|
| - class F extends A with D1, D2, D3 {
|
| - int f1;
|
| - }
|
| - ''',
|
| - '/b.dart': '''
|
| - library b;
|
| -
|
| - class B {}
|
| - ''',
|
| - '/common.dart': '''
|
| - library common;
|
| -
|
| - class A {
|
| - int i = 42;
|
| - int j = 44;
|
| - int get j2 => j;
|
| - void set j2(int v) { j = v; }
|
| - void inc0() { i++; }
|
| - void inc1(int v) { i = i + (v == null ? -10 : v); }
|
| - void inc2([int v]) { i = i + (v == null ? -10 : v); }
|
| - static int sI;
|
| - static int get sJ => 0;
|
| - static void sM() {}
|
| - }
|
| -
|
| - class B {
|
| - final int f = 3;
|
| - int _w;
|
| - int get w => _w;
|
| - set w(int v) { _w = v; }
|
| -
|
| - String z;
|
| - A a;
|
| -
|
| - B(this._w, this.z, this.a);
|
| - }
|
| -
|
| - class C {
|
| - int x;
|
| - String y;
|
| - B b;
|
| -
|
| - inc(int n) {
|
| - x = x + n;
|
| - }
|
| - dec(int n) {
|
| - x = x - n;
|
| - }
|
| -
|
| - C(this.x, this.y, this.b);
|
| - }
|
| -
|
| -
|
| - class D extends C with A {
|
| - int get x2 => x;
|
| - int get i2 => i;
|
| -
|
| - D(x, y, b) : super(x, y, b);
|
| - }
|
| -
|
| - class E {
|
| - set x(int v) { }
|
| - int get y => 1;
|
| -
|
| - noSuchMethod(i) => y;
|
| - }
|
| -
|
| - class E2 extends E {}
|
| -
|
| - class F {
|
| - static int staticMethod(A a) => a.i;
|
| - }
|
| -
|
| - class F2 extends F {}
|
| -
|
| - class Annot { const Annot(int ignore); }
|
| - class AnnotB extends Annot { const AnnotB(); }
|
| - class AnnotC { const AnnotC({bool named: false}); }
|
| - const a1 = const Annot(0);
|
| - const a2 = 32;
|
| - const a3 = const AnnotB();
|
| -
|
| -
|
| - class G {
|
| - int a;
|
| - @a1 int b;
|
| - int c;
|
| - @a2 int d;
|
| - }
|
| -
|
| - class H extends G {
|
| - int e;
|
| - @a1 int f;
|
| - @a1 int g;
|
| - @a2 int h;
|
| - @a3 int i;
|
| - @Annot(1) int j;
|
| - }
|
| -
|
| - class I {
|
| - dynamic i1;
|
| - get i2 => null;
|
| - set i2(v) {}
|
| - G get i3;
|
| - G m4() {};
|
| - }
|
| -
|
| - class J1 {
|
| - int i;
|
| - }
|
| - class J2 extends J1 {
|
| - }
|
| - class J3 extends J2 {
|
| - }
|
| -
|
| - class K {
|
| - @AnnotC(named: true) int k;
|
| - @AnnotC() int k2;
|
| - }
|
| - '''
|
| -};
|
| -
|
| -resolveImportUrl(LibraryElement lib) =>
|
| - lib.isDartCore ? 'dart:core' : '/${lib.displayName}.dart';
|
|
|