Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Side by Side Diff: pkg/analyzer/test/src/summary/summary_common.dart

Issue 2779993002: Store literal values and invocations arguments only for constants and untyped literals. (Closed)
Patch Set: Update IDL documentation. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library analyzer.test.src.summary.summary_common; 5 library analyzer.test.src.summary.summary_common;
6 6
7 import 'package:analyzer/analyzer.dart'; 7 import 'package:analyzer/analyzer.dart';
8 import 'package:analyzer/dart/ast/ast.dart'; 8 import 'package:analyzer/dart/ast/ast.dart';
9 import 'package:analyzer/error/listener.dart'; 9 import 'package:analyzer/error/listener.dart';
10 import 'package:analyzer/src/dart/scanner/reader.dart'; 10 import 'package:analyzer/src/dart/scanner/reader.dart';
(...skipping 7081 matching lines...) Expand 10 before | Expand all | Expand 10 after
7092 strings: [ 7092 strings: [
7093 'f' 7093 'f'
7094 ], 7094 ],
7095 referenceValidators: [ 7095 referenceValidators: [
7096 (EntityRef r) => checkTypeRef(r, null, 'C', 7096 (EntityRef r) => checkTypeRef(r, null, 'C',
7097 expectedKind: ReferenceKind.classOrEnum) 7097 expectedKind: ReferenceKind.classOrEnum)
7098 ]); 7098 ]);
7099 } 7099 }
7100 7100
7101 test_expr_functionExpression_asArgument() { 7101 test_expr_functionExpression_asArgument() {
7102 if (skipNonConstInitializers) {
7103 return;
7104 }
7105 UnlinkedVariable variable = serializeVariableText(''' 7102 UnlinkedVariable variable = serializeVariableText('''
7106 final v = foo(5, () => 42); 7103 final v = foo(5, () => 42);
7107 foo(a, b) {} 7104 foo(a, b) {}
7108 '''); 7105 ''');
7109 assertUnlinkedConst(variable.initializer.bodyExpr, 7106 assertUnlinkedConst(variable.initializer.bodyExpr,
7110 isValidConst: false, 7107 isValidConst: false,
7111 operators: [ 7108 operators: [
7112 UnlinkedExprOperation.pushInt,
7113 UnlinkedExprOperation.pushLocalFunctionReference,
7114 UnlinkedExprOperation.invokeMethodRef 7109 UnlinkedExprOperation.invokeMethodRef
7115 ], 7110 ],
7116 ints: [ 7111 ints: [
7117 5,
7118 0, 7112 0,
7119 0, 7113 0,
7120 0,
7121 2,
7122 0 7114 0
7123 ], 7115 ],
7124 referenceValidators: [ 7116 referenceValidators: [
7125 (EntityRef r) => checkTypeRef(r, null, 'foo', 7117 (EntityRef r) => checkTypeRef(r, null, 'foo',
7126 expectedKind: ReferenceKind.topLevelFunction) 7118 expectedKind: ReferenceKind.topLevelFunction)
7127 ]); 7119 ]);
7128 } 7120 }
7129 7121
7130 test_expr_functionExpression_asArgument_multiple() { 7122 test_expr_functionExpression_asArgument_multiple() {
7131 if (skipNonConstInitializers) {
7132 return;
7133 }
7134 UnlinkedVariable variable = serializeVariableText(''' 7123 UnlinkedVariable variable = serializeVariableText('''
7135 final v = foo(5, () => 42, () => 43); 7124 final v = foo(5, () => 42, () => 43);
7136 foo(a, b, c) {} 7125 foo(a, b, c) {}
7137 '''); 7126 ''');
7138 assertUnlinkedConst(variable.initializer.bodyExpr, 7127 assertUnlinkedConst(variable.initializer.bodyExpr,
7139 isValidConst: false, 7128 isValidConst: false,
7140 operators: [ 7129 operators: [
7141 UnlinkedExprOperation.pushInt,
7142 UnlinkedExprOperation.pushLocalFunctionReference,
7143 UnlinkedExprOperation.pushLocalFunctionReference,
7144 UnlinkedExprOperation.invokeMethodRef 7130 UnlinkedExprOperation.invokeMethodRef
7145 ], 7131 ],
7146 ints: [ 7132 ints: [
7147 5,
7148 0, 7133 0,
7149 0, 7134 0,
7150 0,
7151 1,
7152 0,
7153 3,
7154 0 7135 0
7155 ], 7136 ],
7156 referenceValidators: [ 7137 referenceValidators: [
7157 (EntityRef r) => checkTypeRef(r, null, 'foo', 7138 (EntityRef r) => checkTypeRef(r, null, 'foo',
7158 expectedKind: ReferenceKind.topLevelFunction) 7139 expectedKind: ReferenceKind.topLevelFunction)
7159 ]); 7140 ]);
7160 } 7141 }
7161 7142
7162 test_expr_functionExpression_withBlockBody() { 7143 test_expr_functionExpression_withBlockBody() {
7163 if (skipNonConstInitializers) { 7144 if (skipNonConstInitializers) {
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
7405 var c = serializeClassText(''' 7386 var c = serializeClassText('''
7406 class C<T> { 7387 class C<T> {
7407 final f = T.k; 7388 final f = T.k;
7408 } 7389 }
7409 '''); 7390 ''');
7410 assertUnlinkedConst(c.fields[0].initializer.bodyExpr, 7391 assertUnlinkedConst(c.fields[0].initializer.bodyExpr,
7411 isValidConst: false, operators: []); 7392 isValidConst: false, operators: []);
7412 } 7393 }
7413 7394
7414 test_expr_invokeMethod_instance() { 7395 test_expr_invokeMethod_instance() {
7415 if (skipNonConstInitializers) {
7416 return;
7417 }
7418 UnlinkedVariable variable = serializeVariableText(''' 7396 UnlinkedVariable variable = serializeVariableText('''
7419 class C { 7397 class C {
7420 int m(a, {b, c}) => 42; 7398 int m(a, {b, c}) => 42;
7421 } 7399 }
7422 final v = new C().m(1, b: 2, c: 3); 7400 final v = new C().m(1, b: 2, c: 3);
7423 '''); 7401 ''');
7424 assertUnlinkedConst(variable.initializer.bodyExpr, 7402 assertUnlinkedConst(variable.initializer.bodyExpr,
7425 isValidConst: false, 7403 isValidConst: false,
7426 operators: [ 7404 operators: [
7427 UnlinkedExprOperation.invokeConstructor, 7405 UnlinkedExprOperation.invokeConstructor,
7428 UnlinkedExprOperation.pushInt,
7429 UnlinkedExprOperation.pushInt,
7430 UnlinkedExprOperation.pushInt,
7431 UnlinkedExprOperation.invokeMethod, 7406 UnlinkedExprOperation.invokeMethod,
7432 ], 7407 ],
7433 ints: [ 7408 ints: [
7434 0, 7409 0,
7435 0, 7410 0,
7436 1, 7411 0,
7437 2, 7412 0,
7438 3,
7439 2,
7440 1,
7441 0 7413 0
7442 ], 7414 ],
7443 strings: [ 7415 strings: [
7444 'b',
7445 'c',
7446 'm' 7416 'm'
7447 ], 7417 ],
7448 referenceValidators: [ 7418 referenceValidators: [
7449 (EntityRef r) => checkTypeRef(r, null, 'C', 7419 (EntityRef r) => checkTypeRef(r, null, 'C',
7450 expectedKind: ReferenceKind.classOrEnum) 7420 expectedKind: ReferenceKind.classOrEnum)
7451 ]); 7421 ]);
7452 } 7422 }
7453 7423
7454 test_expr_invokeMethod_withTypeParameters() { 7424 test_expr_invokeMethod_withTypeParameters() {
7455 if (skipNonConstInitializers) { 7425 if (skipNonConstInitializers) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
7497 } 7467 }
7498 class C { 7468 class C {
7499 int m(int a, int b) => a + b; 7469 int m(int a, int b) => a + b;
7500 } 7470 }
7501 A a = new A(); 7471 A a = new A();
7502 final v = a.b.c.m(10, 20); 7472 final v = a.b.c.m(10, 20);
7503 '''); 7473 ''');
7504 assertUnlinkedConst(variable.initializer.bodyExpr, 7474 assertUnlinkedConst(variable.initializer.bodyExpr,
7505 isValidConst: false, 7475 isValidConst: false,
7506 operators: [ 7476 operators: [
7507 UnlinkedExprOperation.pushInt,
7508 UnlinkedExprOperation.pushInt,
7509 UnlinkedExprOperation.invokeMethodRef, 7477 UnlinkedExprOperation.invokeMethodRef,
7510 ], 7478 ],
7511 ints: [ 7479 ints: [
7512 10,
7513 20,
7514 0, 7480 0,
7515 2, 7481 0,
7516 0 7482 0
7517 ], 7483 ],
7518 strings: [], 7484 strings: [],
7519 referenceValidators: [ 7485 referenceValidators: [
7520 (EntityRef r) => checkTypeRef(r, null, 'm', 7486 (EntityRef r) => checkTypeRef(r, null, 'm',
7521 expectedKind: ReferenceKind.unresolved, 7487 expectedKind: ReferenceKind.unresolved,
7522 prefixExpectations: [ 7488 prefixExpectations: [
7523 new _PrefixExpectation(ReferenceKind.unresolved, 'c'), 7489 new _PrefixExpectation(ReferenceKind.unresolved, 'c'),
7524 new _PrefixExpectation(ReferenceKind.unresolved, 'b'), 7490 new _PrefixExpectation(ReferenceKind.unresolved, 'b'),
7525 new _PrefixExpectation( 7491 new _PrefixExpectation(
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
7570 return; 7536 return;
7571 } 7537 }
7572 UnlinkedVariable variable = serializeVariableText(''' 7538 UnlinkedVariable variable = serializeVariableText('''
7573 f(x) => null; 7539 f(x) => null;
7574 final u = null; 7540 final u = null;
7575 final v = f(u); 7541 final v = f(u);
7576 '''); 7542 ''');
7577 assertUnlinkedConst(variable.initializer.bodyExpr, 7543 assertUnlinkedConst(variable.initializer.bodyExpr,
7578 isValidConst: false, 7544 isValidConst: false,
7579 operators: [ 7545 operators: [
7580 UnlinkedExprOperation.pushReference,
7581 UnlinkedExprOperation.invokeMethodRef 7546 UnlinkedExprOperation.invokeMethodRef
7582 ], 7547 ],
7583 ints: [ 7548 ints: [
7584 0, 7549 0,
7585 1, 7550 0,
7586 0 7551 0
7587 ], 7552 ],
7588 referenceValidators: [ 7553 referenceValidators: [
7589 (EntityRef r) => checkTypeRef(r, null, 'u',
7590 expectedKind: ReferenceKind.topLevelPropertyAccessor),
7591 (EntityRef r) => checkTypeRef(r, null, 'f', 7554 (EntityRef r) => checkTypeRef(r, null, 'f',
7592 expectedKind: ReferenceKind.topLevelFunction) 7555 expectedKind: ReferenceKind.topLevelFunction)
7593 ]); 7556 ]);
7594 } 7557 }
7595 7558
7596 test_expr_invokeMethodRef_withTypeParameters() { 7559 test_expr_invokeMethodRef_withTypeParameters() {
7597 if (skipNonConstInitializers) { 7560 if (skipNonConstInitializers) {
7598 return; 7561 return;
7599 } 7562 }
7600 UnlinkedVariable variable = serializeVariableText(''' 7563 UnlinkedVariable variable = serializeVariableText('''
(...skipping 12 matching lines...) Expand all
7613 ], 7576 ],
7614 referenceValidators: [ 7577 referenceValidators: [
7615 (EntityRef r) => checkTypeRef(r, null, 'f', 7578 (EntityRef r) => checkTypeRef(r, null, 'f',
7616 expectedKind: ReferenceKind.topLevelFunction, 7579 expectedKind: ReferenceKind.topLevelFunction,
7617 numTypeParameters: 2), 7580 numTypeParameters: 2),
7618 (EntityRef r) => checkTypeRef(r, 'dart:core', 'int'), 7581 (EntityRef r) => checkTypeRef(r, 'dart:core', 'int'),
7619 (EntityRef r) => checkTypeRef(r, 'dart:core', 'String') 7582 (EntityRef r) => checkTypeRef(r, 'dart:core', 'String')
7620 ]); 7583 ]);
7621 } 7584 }
7622 7585
7586 test_expr_makeTypedList() {
7587 UnlinkedVariable variable =
7588 serializeVariableText('var v = <int>[11, 22, 33];');
7589 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [
7590 UnlinkedExprOperation.makeTypedList
7591 ], ints: [
7592 0
7593 ], referenceValidators: [
7594 (EntityRef r) => checkTypeRef(r, 'dart:core', 'int',
7595 expectedKind: ReferenceKind.classOrEnum)
7596 ]);
7597 }
7598
7599 test_expr_makeTypedMap() {
7600 UnlinkedVariable variable = serializeVariableText(
7601 'var v = <int, String>{11: "aaa", 22: "bbb", 33: "ccc"};');
7602 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [
7603 UnlinkedExprOperation.makeTypedMap
7604 ], ints: [
7605 0
7606 ], referenceValidators: [
7607 (EntityRef r) => checkTypeRef(r, 'dart:core', 'int',
7608 expectedKind: ReferenceKind.classOrEnum),
7609 (EntityRef r) => checkTypeRef(r, 'dart:core', 'String',
7610 expectedKind: ReferenceKind.classOrEnum)
7611 ]);
7612 }
7613
7614 test_expr_makeUntypedList() {
7615 UnlinkedVariable variable = serializeVariableText('var v = [11, 22, 33];');
7616 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [
7617 UnlinkedExprOperation.pushInt,
7618 UnlinkedExprOperation.pushInt,
7619 UnlinkedExprOperation.pushInt,
7620 UnlinkedExprOperation.makeUntypedList
7621 ], ints: [
7622 11,
7623 22,
7624 33,
7625 3
7626 ]);
7627 }
7628
7629 test_expr_makeUntypedMap() {
7630 UnlinkedVariable variable =
7631 serializeVariableText('var v = {11: "aaa", 22: "bbb", 33: "ccc"};');
7632 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [
7633 UnlinkedExprOperation.pushInt,
7634 UnlinkedExprOperation.pushString,
7635 UnlinkedExprOperation.pushInt,
7636 UnlinkedExprOperation.pushString,
7637 UnlinkedExprOperation.pushInt,
7638 UnlinkedExprOperation.pushString,
7639 UnlinkedExprOperation.makeUntypedMap
7640 ], ints: [
7641 11,
7642 22,
7643 33,
7644 3
7645 ], strings: [
7646 'aaa',
7647 'bbb',
7648 'ccc'
7649 ]);
7650 }
7651
7623 test_expr_super() { 7652 test_expr_super() {
7624 if (skipNonConstInitializers) { 7653 if (skipNonConstInitializers) {
7625 return; 7654 return;
7626 } 7655 }
7627 UnlinkedVariable variable = serializeVariableText(''' 7656 UnlinkedVariable variable = serializeVariableText('''
7628 final v = super; 7657 final v = super;
7629 '''); 7658 ''');
7630 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ 7659 assertUnlinkedConst(variable.initializer.bodyExpr, operators: [
7631 UnlinkedExprOperation.pushSuper, 7660 UnlinkedExprOperation.pushSuper,
7632 ]); 7661 ]);
(...skipping 2982 matching lines...) Expand 10 before | Expand all | Expand 10 after
10615 */ 10644 */
10616 class _PrefixExpectation { 10645 class _PrefixExpectation {
10617 final ReferenceKind kind; 10646 final ReferenceKind kind;
10618 final String name; 10647 final String name;
10619 final String absoluteUri; 10648 final String absoluteUri;
10620 final int numTypeParameters; 10649 final int numTypeParameters;
10621 10650
10622 _PrefixExpectation(this.kind, this.name, 10651 _PrefixExpectation(this.kind, this.name,
10623 {this.absoluteUri, this.numTypeParameters: 0}); 10652 {this.absoluteUri, this.numTypeParameters: 0});
10624 } 10653 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698