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

Side by Side Diff: pkg/analyzer/test/generated/all_the_rest_test.dart

Issue 1753963003: Add codeOffset/codeLength properties to ElementImpl. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 9 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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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.generated.all_the_rest_test; 5 library analyzer.test.generated.all_the_rest_test;
6 6
7 import 'package:analyzer/dart/ast/ast.dart'; 7 import 'package:analyzer/dart/ast/ast.dart';
8 import 'package:analyzer/dart/ast/token.dart'; 8 import 'package:analyzer/dart/ast/token.dart';
9 import 'package:analyzer/dart/element/element.dart'; 9 import 'package:analyzer/dart/element/element.dart';
10 import 'package:analyzer/dart/element/type.dart'; 10 import 'package:analyzer/dart/element/type.dart';
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 } 653 }
654 654
655 void test_visitClassDeclaration_minimal() { 655 void test_visitClassDeclaration_minimal() {
656 ElementHolder holder = new ElementHolder(); 656 ElementHolder holder = new ElementHolder();
657 ElementBuilder builder = _makeBuilder(holder); 657 ElementBuilder builder = _makeBuilder(holder);
658 String className = "C"; 658 String className = "C";
659 ClassDeclaration classDeclaration = 659 ClassDeclaration classDeclaration =
660 AstFactory.classDeclaration(null, className, null, null, null, null); 660 AstFactory.classDeclaration(null, className, null, null, null, null);
661 classDeclaration.documentationComment = AstFactory.documentationComment( 661 classDeclaration.documentationComment = AstFactory.documentationComment(
662 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); 662 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
663 classDeclaration.endToken.offset = 80;
663 classDeclaration.accept(builder); 664 classDeclaration.accept(builder);
664 List<ClassElement> types = holder.types; 665 List<ClassElement> types = holder.types;
665 expect(types, hasLength(1)); 666 expect(types, hasLength(1));
666 ClassElement type = types[0]; 667 ClassElement type = types[0];
667 expect(type, isNotNull); 668 expect(type, isNotNull);
668 expect(type.name, className); 669 expect(type.name, className);
669 List<TypeParameterElement> typeParameters = type.typeParameters; 670 List<TypeParameterElement> typeParameters = type.typeParameters;
670 expect(typeParameters, hasLength(0)); 671 expect(typeParameters, hasLength(0));
671 expect(type.isAbstract, isFalse); 672 expect(type.isAbstract, isFalse);
672 expect(type.isMixinApplication, isFalse); 673 expect(type.isMixinApplication, isFalse);
673 expect(type.isSynthetic, isFalse); 674 expect(type.isSynthetic, isFalse);
674 expect(type.documentationComment, '/// aaa'); 675 expect(type.documentationComment, '/// aaa');
675 _assertHasDocRange(type, 50, 7); 676 _assertHasDocRange(type, 50, 7);
677 _assertHasCodeRange(type, 50, 31);
676 } 678 }
677 679
678 void test_visitClassDeclaration_parameterized() { 680 void test_visitClassDeclaration_parameterized() {
679 ElementHolder holder = new ElementHolder(); 681 ElementHolder holder = new ElementHolder();
680 ElementBuilder builder = _makeBuilder(holder); 682 ElementBuilder builder = _makeBuilder(holder);
681 String className = "C"; 683 String className = "C";
682 String firstVariableName = "E"; 684 String firstVariableName = "E";
683 String secondVariableName = "F"; 685 String secondVariableName = "F";
684 ClassDeclaration classDeclaration = AstFactory.classDeclaration( 686 ClassDeclaration classDeclaration = AstFactory.classDeclaration(
685 null, 687 null,
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
830 withClause, 832 withClause,
831 null); 833 null);
832 classCAst.accept(builder); 834 classCAst.accept(builder);
833 List<ClassElement> types = holder.types; 835 List<ClassElement> types = holder.types;
834 expect(types, hasLength(1)); 836 expect(types, hasLength(1));
835 ClassElement type = types[0]; 837 ClassElement type = types[0];
836 expect(type.typeParameters, hasLength(1)); 838 expect(type.typeParameters, hasLength(1));
837 expect(type.typeParameters[0].name, equals('T')); 839 expect(type.typeParameters[0].name, equals('T'));
838 } 840 }
839 841
842 void test_visitCompilationUnit_codeRange() {
843 TopLevelVariableDeclaration topLevelVariableDeclaration = AstFactory
844 .topLevelVariableDeclaration(null, AstFactory.typeName4('int'),
845 [AstFactory.variableDeclaration('V')]);
846 CompilationUnit unit = new CompilationUnit(
847 topLevelVariableDeclaration.beginToken,
848 null,
849 [],
850 [topLevelVariableDeclaration],
851 topLevelVariableDeclaration.endToken);
852 ElementHolder holder = new ElementHolder();
853 ElementBuilder builder = _makeBuilder(holder);
854 unit.beginToken.offset = 10;
855 unit.endToken.offset = 40;
856 unit.accept(builder);
857
858 CompilationUnitElement element = builder.compilationUnitElement;
859 _assertHasCodeRange(element, 0, 41);
860 }
861
840 void test_visitConstructorDeclaration_external() { 862 void test_visitConstructorDeclaration_external() {
841 ElementHolder holder = new ElementHolder(); 863 ElementHolder holder = new ElementHolder();
842 ElementBuilder builder = _makeBuilder(holder); 864 ElementBuilder builder = _makeBuilder(holder);
843 String className = "A"; 865 String className = "A";
844 ConstructorDeclaration constructorDeclaration = 866 ConstructorDeclaration constructorDeclaration =
845 AstFactory.constructorDeclaration2( 867 AstFactory.constructorDeclaration2(
846 null, 868 null,
847 null, 869 null,
848 AstFactory.identifier3(className), 870 AstFactory.identifier3(className),
849 null, 871 null,
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 null, 924 null,
903 null, 925 null,
904 AstFactory.identifier3(className), 926 AstFactory.identifier3(className),
905 null, 927 null,
906 AstFactory.formalParameterList(), 928 AstFactory.formalParameterList(),
907 null, 929 null,
908 AstFactory.blockFunctionBody2()); 930 AstFactory.blockFunctionBody2());
909 constructorDeclaration.documentationComment = AstFactory 931 constructorDeclaration.documentationComment = AstFactory
910 .documentationComment( 932 .documentationComment(
911 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); 933 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
934 constructorDeclaration.endToken.offset = 80;
912 constructorDeclaration.accept(builder); 935 constructorDeclaration.accept(builder);
913 936
914 List<ConstructorElement> constructors = holder.constructors; 937 List<ConstructorElement> constructors = holder.constructors;
915 expect(constructors, hasLength(1)); 938 expect(constructors, hasLength(1));
916 ConstructorElement constructor = constructors[0]; 939 ConstructorElement constructor = constructors[0];
917 expect(constructor, isNotNull); 940 expect(constructor, isNotNull);
941 _assertHasCodeRange(constructor, 50, 31);
918 expect(constructor.documentationComment, '/// aaa'); 942 expect(constructor.documentationComment, '/// aaa');
919 _assertHasDocRange(constructor, 50, 7); 943 _assertHasDocRange(constructor, 50, 7);
920 expect(constructor.isExternal, isFalse); 944 expect(constructor.isExternal, isFalse);
921 expect(constructor.isFactory, isFalse); 945 expect(constructor.isFactory, isFalse);
922 expect(constructor.name, ""); 946 expect(constructor.name, "");
923 expect(constructor.functions, hasLength(0)); 947 expect(constructor.functions, hasLength(0));
924 expect(constructor.labels, hasLength(0)); 948 expect(constructor.labels, hasLength(0));
925 expect(constructor.localVariables, hasLength(0)); 949 expect(constructor.localVariables, hasLength(0));
926 expect(constructor.parameters, hasLength(0)); 950 expect(constructor.parameters, hasLength(0));
927 } 951 }
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
986 1010
987 void test_visitDeclaredIdentifier_noType() { 1011 void test_visitDeclaredIdentifier_noType() {
988 // var i 1012 // var i
989 ElementHolder holder = new ElementHolder(); 1013 ElementHolder holder = new ElementHolder();
990 ElementBuilder builder = _makeBuilder(holder); 1014 ElementBuilder builder = _makeBuilder(holder);
991 var variableName = 'i'; 1015 var variableName = 'i';
992 DeclaredIdentifier identifier = 1016 DeclaredIdentifier identifier =
993 AstFactory.declaredIdentifier3(variableName); 1017 AstFactory.declaredIdentifier3(variableName);
994 AstFactory.forEachStatement( 1018 AstFactory.forEachStatement(
995 identifier, AstFactory.nullLiteral(), AstFactory.emptyStatement()); 1019 identifier, AstFactory.nullLiteral(), AstFactory.emptyStatement());
1020 identifier.beginToken.offset = 50;
1021 identifier.endToken.offset = 80;
996 identifier.accept(builder); 1022 identifier.accept(builder);
997 1023
998 List<LocalVariableElement> variables = holder.localVariables; 1024 List<LocalVariableElement> variables = holder.localVariables;
999 expect(variables, hasLength(1)); 1025 expect(variables, hasLength(1));
1000 LocalVariableElement variable = variables[0]; 1026 LocalVariableElement variable = variables[0];
1027 _assertHasCodeRange(variable, 50, 31);
1001 expect(variable, isNotNull); 1028 expect(variable, isNotNull);
1002 expect(variable.hasImplicitType, isTrue); 1029 expect(variable.hasImplicitType, isTrue);
1003 expect(variable.isConst, isFalse); 1030 expect(variable.isConst, isFalse);
1004 expect(variable.isDeprecated, isFalse); 1031 expect(variable.isDeprecated, isFalse);
1005 expect(variable.isFinal, isFalse); 1032 expect(variable.isFinal, isFalse);
1006 expect(variable.isOverride, isFalse); 1033 expect(variable.isOverride, isFalse);
1007 expect(variable.isPrivate, isFalse); 1034 expect(variable.isPrivate, isFalse);
1008 expect(variable.isPublic, isTrue); 1035 expect(variable.isPublic, isTrue);
1009 expect(variable.isSynthetic, isFalse); 1036 expect(variable.isSynthetic, isFalse);
1010 expect(variable.name, variableName); 1037 expect(variable.name, variableName);
1011 } 1038 }
1012 1039
1013 void test_visitDeclaredIdentifier_type() { 1040 void test_visitDeclaredIdentifier_type() {
1014 // E i 1041 // E i
1015 ElementHolder holder = new ElementHolder(); 1042 ElementHolder holder = new ElementHolder();
1016 ElementBuilder builder = _makeBuilder(holder); 1043 ElementBuilder builder = _makeBuilder(holder);
1017 var variableName = 'i'; 1044 var variableName = 'i';
1018 DeclaredIdentifier identifier = 1045 DeclaredIdentifier identifier =
1019 AstFactory.declaredIdentifier4(AstFactory.typeName4('E'), variableName); 1046 AstFactory.declaredIdentifier4(AstFactory.typeName4('E'), variableName);
1020 AstFactory.forEachStatement( 1047 AstFactory.forEachStatement(
1021 identifier, AstFactory.nullLiteral(), AstFactory.emptyStatement()); 1048 identifier, AstFactory.nullLiteral(), AstFactory.emptyStatement());
1049 identifier.beginToken.offset = 50;
1050 identifier.endToken.offset = 80;
1022 identifier.accept(builder); 1051 identifier.accept(builder);
1023 1052
1024 List<LocalVariableElement> variables = holder.localVariables; 1053 List<LocalVariableElement> variables = holder.localVariables;
1025 expect(variables, hasLength(1)); 1054 expect(variables, hasLength(1));
1026 LocalVariableElement variable = variables[0]; 1055 LocalVariableElement variable = variables[0];
1027 expect(variable, isNotNull); 1056 expect(variable, isNotNull);
1057 _assertHasCodeRange(variable, 50, 31);
1028 expect(variable.hasImplicitType, isFalse); 1058 expect(variable.hasImplicitType, isFalse);
1029 expect(variable.isConst, isFalse); 1059 expect(variable.isConst, isFalse);
1030 expect(variable.isDeprecated, isFalse); 1060 expect(variable.isDeprecated, isFalse);
1031 expect(variable.isFinal, isFalse); 1061 expect(variable.isFinal, isFalse);
1032 expect(variable.isOverride, isFalse); 1062 expect(variable.isOverride, isFalse);
1033 expect(variable.isPrivate, isFalse); 1063 expect(variable.isPrivate, isFalse);
1034 expect(variable.isPublic, isTrue); 1064 expect(variable.isPublic, isTrue);
1035 expect(variable.isSynthetic, isFalse); 1065 expect(variable.isSynthetic, isFalse);
1036 expect(variable.name, variableName); 1066 expect(variable.name, variableName);
1037 } 1067 }
1038 1068
1039 void test_visitDefaultFormalParameter_noType() { 1069 void test_visitDefaultFormalParameter_noType() {
1040 // p = 0 1070 // p = 0
1041 ElementHolder holder = new ElementHolder(); 1071 ElementHolder holder = new ElementHolder();
1042 ElementBuilder builder = _makeBuilder(holder); 1072 ElementBuilder builder = _makeBuilder(holder);
1043 String parameterName = 'p'; 1073 String parameterName = 'p';
1044 DefaultFormalParameter formalParameter = 1074 DefaultFormalParameter formalParameter =
1045 AstFactory.positionalFormalParameter( 1075 AstFactory.positionalFormalParameter(
1046 AstFactory.simpleFormalParameter3(parameterName), 1076 AstFactory.simpleFormalParameter3(parameterName),
1047 AstFactory.integer(0)); 1077 AstFactory.integer(0));
1078 formalParameter.beginToken.offset = 50;
1079 formalParameter.endToken.offset = 80;
1048 formalParameter.accept(builder); 1080 formalParameter.accept(builder);
1049 1081
1050 List<ParameterElement> parameters = holder.parameters; 1082 List<ParameterElement> parameters = holder.parameters;
1051 expect(parameters, hasLength(1)); 1083 expect(parameters, hasLength(1));
1052 ParameterElement parameter = parameters[0]; 1084 ParameterElement parameter = parameters[0];
1085 _assertHasCodeRange(parameter, 50, 31);
1053 expect(parameter.hasImplicitType, isTrue); 1086 expect(parameter.hasImplicitType, isTrue);
1054 expect(parameter.initializer, isNotNull); 1087 expect(parameter.initializer, isNotNull);
1055 expect(parameter.initializer.type, isNotNull); 1088 expect(parameter.initializer.type, isNotNull);
1056 expect(parameter.initializer.hasImplicitReturnType, isTrue); 1089 expect(parameter.initializer.hasImplicitReturnType, isTrue);
1057 expect(parameter.isConst, isFalse); 1090 expect(parameter.isConst, isFalse);
1058 expect(parameter.isDeprecated, isFalse); 1091 expect(parameter.isDeprecated, isFalse);
1059 expect(parameter.isFinal, isFalse); 1092 expect(parameter.isFinal, isFalse);
1060 expect(parameter.isInitializingFormal, isFalse); 1093 expect(parameter.isInitializingFormal, isFalse);
1061 expect(parameter.isOverride, isFalse); 1094 expect(parameter.isOverride, isFalse);
1062 expect(parameter.isPrivate, isFalse); 1095 expect(parameter.isPrivate, isFalse);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1095 } 1128 }
1096 1129
1097 void test_visitEnumDeclaration() { 1130 void test_visitEnumDeclaration() {
1098 ElementHolder holder = new ElementHolder(); 1131 ElementHolder holder = new ElementHolder();
1099 ElementBuilder builder = _makeBuilder(holder); 1132 ElementBuilder builder = _makeBuilder(holder);
1100 String enumName = "E"; 1133 String enumName = "E";
1101 EnumDeclaration enumDeclaration = 1134 EnumDeclaration enumDeclaration =
1102 AstFactory.enumDeclaration2(enumName, ["ONE"]); 1135 AstFactory.enumDeclaration2(enumName, ["ONE"]);
1103 enumDeclaration.documentationComment = AstFactory.documentationComment( 1136 enumDeclaration.documentationComment = AstFactory.documentationComment(
1104 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); 1137 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
1138 enumDeclaration.endToken.offset = 80;
1105 enumDeclaration.accept(builder); 1139 enumDeclaration.accept(builder);
1106 List<ClassElement> enums = holder.enums; 1140 List<ClassElement> enums = holder.enums;
1107 expect(enums, hasLength(1)); 1141 expect(enums, hasLength(1));
1108 ClassElement enumElement = enums[0]; 1142 ClassElement enumElement = enums[0];
1109 expect(enumElement, isNotNull); 1143 expect(enumElement, isNotNull);
1144 _assertHasCodeRange(enumElement, 50, 31);
1110 expect(enumElement.documentationComment, '/// aaa'); 1145 expect(enumElement.documentationComment, '/// aaa');
1111 _assertHasDocRange(enumElement, 50, 7); 1146 _assertHasDocRange(enumElement, 50, 7);
1112 expect(enumElement.name, enumName); 1147 expect(enumElement.name, enumName);
1113 } 1148 }
1114 1149
1115 void test_visitFieldDeclaration() { 1150 void test_visitFieldDeclaration() {
1116 ElementHolder holder = new ElementHolder(); 1151 ElementHolder holder = new ElementHolder();
1117 ElementBuilder builder = _makeBuilder(holder); 1152 ElementBuilder builder = _makeBuilder(holder);
1118 String firstFieldName = "x"; 1153 String firstFieldName = "x";
1119 String secondFieldName = "y"; 1154 String secondFieldName = "y";
1120 FieldDeclaration fieldDeclaration = 1155 FieldDeclaration fieldDeclaration =
1121 AstFactory.fieldDeclaration2(false, null, [ 1156 AstFactory.fieldDeclaration2(false, null, [
1122 AstFactory.variableDeclaration(firstFieldName), 1157 AstFactory.variableDeclaration(firstFieldName),
1123 AstFactory.variableDeclaration(secondFieldName) 1158 AstFactory.variableDeclaration(secondFieldName)
1124 ]); 1159 ]);
1125 fieldDeclaration.documentationComment = AstFactory.documentationComment( 1160 fieldDeclaration.documentationComment = AstFactory.documentationComment(
1126 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); 1161 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
1162 fieldDeclaration.endToken.offset = 110;
1127 fieldDeclaration.accept(builder); 1163 fieldDeclaration.accept(builder);
1128 1164
1129 List<FieldElement> fields = holder.fields; 1165 List<FieldElement> fields = holder.fields;
1130 expect(fields, hasLength(2)); 1166 expect(fields, hasLength(2));
1131 1167
1132 FieldElement firstField = fields[0]; 1168 FieldElement firstField = fields[0];
1133 expect(firstField, isNotNull); 1169 expect(firstField, isNotNull);
1170 _assertHasCodeRange(firstField, 50, 61);
1134 expect(firstField.documentationComment, '/// aaa'); 1171 expect(firstField.documentationComment, '/// aaa');
1135 _assertHasDocRange(firstField, 50, 7); 1172 _assertHasDocRange(firstField, 50, 7);
1136 expect(firstField.name, firstFieldName); 1173 expect(firstField.name, firstFieldName);
1137 expect(firstField.initializer, isNull); 1174 expect(firstField.initializer, isNull);
1138 expect(firstField.isConst, isFalse); 1175 expect(firstField.isConst, isFalse);
1139 expect(firstField.isFinal, isFalse); 1176 expect(firstField.isFinal, isFalse);
1140 expect(firstField.isSynthetic, isFalse); 1177 expect(firstField.isSynthetic, isFalse);
1141 1178
1142 FieldElement secondField = fields[1]; 1179 FieldElement secondField = fields[1];
1143 expect(secondField, isNotNull); 1180 expect(secondField, isNotNull);
1181 _assertHasCodeRange(secondField, 50, 61);
1144 expect(secondField.documentationComment, '/// aaa'); 1182 expect(secondField.documentationComment, '/// aaa');
1145 _assertHasDocRange(secondField, 50, 7); 1183 _assertHasDocRange(secondField, 50, 7);
1146 expect(secondField.name, secondFieldName); 1184 expect(secondField.name, secondFieldName);
1147 expect(secondField.initializer, isNull); 1185 expect(secondField.initializer, isNull);
1148 expect(secondField.isConst, isFalse); 1186 expect(secondField.isConst, isFalse);
1149 expect(secondField.isFinal, isFalse); 1187 expect(secondField.isFinal, isFalse);
1150 expect(secondField.isSynthetic, isFalse); 1188 expect(secondField.isSynthetic, isFalse);
1151 } 1189 }
1152 1190
1153 void test_visitFieldFormalParameter() { 1191 void test_visitFieldFormalParameter() {
1154 ElementHolder holder = new ElementHolder(); 1192 ElementHolder holder = new ElementHolder();
1155 ElementBuilder builder = _makeBuilder(holder); 1193 ElementBuilder builder = _makeBuilder(holder);
1156 String parameterName = "p"; 1194 String parameterName = "p";
1157 FieldFormalParameter formalParameter = 1195 FieldFormalParameter formalParameter =
1158 AstFactory.fieldFormalParameter(null, null, parameterName); 1196 AstFactory.fieldFormalParameter(null, null, parameterName);
1197 formalParameter.beginToken.offset = 50;
1198 formalParameter.endToken.offset = 80;
1159 formalParameter.accept(builder); 1199 formalParameter.accept(builder);
1160 List<ParameterElement> parameters = holder.parameters; 1200 List<ParameterElement> parameters = holder.parameters;
1161 expect(parameters, hasLength(1)); 1201 expect(parameters, hasLength(1));
1162 ParameterElement parameter = parameters[0]; 1202 ParameterElement parameter = parameters[0];
1163 expect(parameter, isNotNull); 1203 expect(parameter, isNotNull);
1204 _assertHasCodeRange(parameter, 50, 31);
1164 expect(parameter.name, parameterName); 1205 expect(parameter.name, parameterName);
1165 expect(parameter.initializer, isNull); 1206 expect(parameter.initializer, isNull);
1166 expect(parameter.isConst, isFalse); 1207 expect(parameter.isConst, isFalse);
1167 expect(parameter.isFinal, isFalse); 1208 expect(parameter.isFinal, isFalse);
1168 expect(parameter.isSynthetic, isFalse); 1209 expect(parameter.isSynthetic, isFalse);
1169 expect(parameter.parameterKind, ParameterKind.REQUIRED); 1210 expect(parameter.parameterKind, ParameterKind.REQUIRED);
1170 expect(parameter.parameters, hasLength(0)); 1211 expect(parameter.parameters, hasLength(0));
1171 } 1212 }
1172 1213
1173 void test_visitFieldFormalParameter_functionTyped() { 1214 void test_visitFieldFormalParameter_functionTyped() {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1244 ElementBuilder builder = _makeBuilder(holder); 1285 ElementBuilder builder = _makeBuilder(holder);
1245 String functionName = "f"; 1286 String functionName = "f";
1246 FunctionDeclaration declaration = AstFactory.functionDeclaration( 1287 FunctionDeclaration declaration = AstFactory.functionDeclaration(
1247 null, 1288 null,
1248 Keyword.GET, 1289 Keyword.GET,
1249 functionName, 1290 functionName,
1250 AstFactory.functionExpression2( 1291 AstFactory.functionExpression2(
1251 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2())); 1292 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2()));
1252 declaration.documentationComment = AstFactory.documentationComment( 1293 declaration.documentationComment = AstFactory.documentationComment(
1253 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); 1294 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
1295 declaration.endToken.offset = 80;
1254 declaration.accept(builder); 1296 declaration.accept(builder);
1255 1297
1256 List<PropertyAccessorElement> accessors = holder.accessors; 1298 List<PropertyAccessorElement> accessors = holder.accessors;
1257 expect(accessors, hasLength(1)); 1299 expect(accessors, hasLength(1));
1258 PropertyAccessorElement accessor = accessors[0]; 1300 PropertyAccessorElement accessor = accessors[0];
1259 expect(accessor, isNotNull); 1301 expect(accessor, isNotNull);
1302 _assertHasCodeRange(accessor, 50, 31);
1260 expect(accessor.documentationComment, '/// aaa'); 1303 expect(accessor.documentationComment, '/// aaa');
1261 _assertHasDocRange(accessor, 50, 7); 1304 _assertHasDocRange(accessor, 50, 7);
1262 expect(accessor.name, functionName); 1305 expect(accessor.name, functionName);
1263 expect(declaration.element, same(accessor)); 1306 expect(declaration.element, same(accessor));
1264 expect(declaration.functionExpression.element, same(accessor)); 1307 expect(declaration.functionExpression.element, same(accessor));
1265 expect(accessor.hasImplicitReturnType, isTrue); 1308 expect(accessor.hasImplicitReturnType, isTrue);
1266 expect(accessor.isGetter, isTrue); 1309 expect(accessor.isGetter, isTrue);
1267 expect(accessor.isExternal, isFalse); 1310 expect(accessor.isExternal, isFalse);
1268 expect(accessor.isSetter, isFalse); 1311 expect(accessor.isSetter, isFalse);
1269 expect(accessor.isSynthetic, isFalse); 1312 expect(accessor.isSynthetic, isFalse);
(...skipping 10 matching lines...) Expand all
1280 ElementBuilder builder = _makeBuilder(holder); 1323 ElementBuilder builder = _makeBuilder(holder);
1281 String functionName = "f"; 1324 String functionName = "f";
1282 FunctionDeclaration declaration = AstFactory.functionDeclaration( 1325 FunctionDeclaration declaration = AstFactory.functionDeclaration(
1283 AstFactory.typeName4('T'), 1326 AstFactory.typeName4('T'),
1284 null, 1327 null,
1285 functionName, 1328 functionName,
1286 AstFactory.functionExpression2( 1329 AstFactory.functionExpression2(
1287 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2())); 1330 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2()));
1288 declaration.documentationComment = AstFactory.documentationComment( 1331 declaration.documentationComment = AstFactory.documentationComment(
1289 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); 1332 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
1333 declaration.endToken.offset = 80;
1290 declaration.accept(builder); 1334 declaration.accept(builder);
1291 1335
1292 List<FunctionElement> functions = holder.functions; 1336 List<FunctionElement> functions = holder.functions;
1293 expect(functions, hasLength(1)); 1337 expect(functions, hasLength(1));
1294 FunctionElement function = functions[0]; 1338 FunctionElement function = functions[0];
1295 expect(function, isNotNull); 1339 expect(function, isNotNull);
1340 _assertHasCodeRange(function, 50, 31);
1296 expect(function.documentationComment, '/// aaa'); 1341 expect(function.documentationComment, '/// aaa');
1297 _assertHasDocRange(function, 50, 7); 1342 _assertHasDocRange(function, 50, 7);
1298 expect(function.hasImplicitReturnType, isFalse); 1343 expect(function.hasImplicitReturnType, isFalse);
1299 expect(function.name, functionName); 1344 expect(function.name, functionName);
1300 expect(declaration.element, same(function)); 1345 expect(declaration.element, same(function));
1301 expect(declaration.functionExpression.element, same(function)); 1346 expect(declaration.functionExpression.element, same(function));
1302 expect(function.isExternal, isFalse); 1347 expect(function.isExternal, isFalse);
1303 expect(function.isSynthetic, isFalse); 1348 expect(function.isSynthetic, isFalse);
1304 expect(function.typeParameters, hasLength(0)); 1349 expect(function.typeParameters, hasLength(0));
1305 } 1350 }
1306 1351
1307 void test_visitFunctionDeclaration_setter() { 1352 void test_visitFunctionDeclaration_setter() {
1308 // set f() {} 1353 // set f() {}
1309 ElementHolder holder = new ElementHolder(); 1354 ElementHolder holder = new ElementHolder();
1310 ElementBuilder builder = _makeBuilder(holder); 1355 ElementBuilder builder = _makeBuilder(holder);
1311 String functionName = "f"; 1356 String functionName = "f";
1312 FunctionDeclaration declaration = AstFactory.functionDeclaration( 1357 FunctionDeclaration declaration = AstFactory.functionDeclaration(
1313 null, 1358 null,
1314 Keyword.SET, 1359 Keyword.SET,
1315 functionName, 1360 functionName,
1316 AstFactory.functionExpression2( 1361 AstFactory.functionExpression2(
1317 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2())); 1362 AstFactory.formalParameterList(), AstFactory.blockFunctionBody2()));
1318 declaration.documentationComment = AstFactory.documentationComment( 1363 declaration.documentationComment = AstFactory.documentationComment(
1319 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); 1364 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
1365 declaration.endToken.offset = 80;
1320 declaration.accept(builder); 1366 declaration.accept(builder);
1321 1367
1322 List<PropertyAccessorElement> accessors = holder.accessors; 1368 List<PropertyAccessorElement> accessors = holder.accessors;
1323 expect(accessors, hasLength(1)); 1369 expect(accessors, hasLength(1));
1324 PropertyAccessorElement accessor = accessors[0]; 1370 PropertyAccessorElement accessor = accessors[0];
1325 expect(accessor, isNotNull); 1371 expect(accessor, isNotNull);
1372 _assertHasCodeRange(accessor, 50, 31);
1326 expect(accessor.documentationComment, '/// aaa'); 1373 expect(accessor.documentationComment, '/// aaa');
1327 _assertHasDocRange(accessor, 50, 7); 1374 _assertHasDocRange(accessor, 50, 7);
1328 expect(accessor.hasImplicitReturnType, isTrue); 1375 expect(accessor.hasImplicitReturnType, isTrue);
1329 expect(accessor.name, "$functionName="); 1376 expect(accessor.name, "$functionName=");
1330 expect(declaration.element, same(accessor)); 1377 expect(declaration.element, same(accessor));
1331 expect(declaration.functionExpression.element, same(accessor)); 1378 expect(declaration.functionExpression.element, same(accessor));
1332 expect(accessor.isGetter, isFalse); 1379 expect(accessor.isGetter, isFalse);
1333 expect(accessor.isExternal, isFalse); 1380 expect(accessor.isExternal, isFalse);
1334 expect(accessor.isSetter, isTrue); 1381 expect(accessor.isSetter, isTrue);
1335 expect(accessor.isSynthetic, isFalse); 1382 expect(accessor.isSynthetic, isFalse);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1389 1436
1390 void test_visitFunctionTypeAlias() { 1437 void test_visitFunctionTypeAlias() {
1391 ElementHolder holder = new ElementHolder(); 1438 ElementHolder holder = new ElementHolder();
1392 ElementBuilder builder = _makeBuilder(holder); 1439 ElementBuilder builder = _makeBuilder(holder);
1393 String aliasName = "F"; 1440 String aliasName = "F";
1394 String parameterName = "E"; 1441 String parameterName = "E";
1395 FunctionTypeAlias aliasNode = AstFactory.typeAlias( 1442 FunctionTypeAlias aliasNode = AstFactory.typeAlias(
1396 null, aliasName, AstFactory.typeParameterList([parameterName]), null); 1443 null, aliasName, AstFactory.typeParameterList([parameterName]), null);
1397 aliasNode.documentationComment = AstFactory.documentationComment( 1444 aliasNode.documentationComment = AstFactory.documentationComment(
1398 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); 1445 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
1446 aliasNode.endToken.offset = 80;
1399 aliasNode.accept(builder); 1447 aliasNode.accept(builder);
1400 1448
1401 List<FunctionTypeAliasElement> aliases = holder.typeAliases; 1449 List<FunctionTypeAliasElement> aliases = holder.typeAliases;
1402 expect(aliases, hasLength(1)); 1450 expect(aliases, hasLength(1));
1403 FunctionTypeAliasElement alias = aliases[0]; 1451 FunctionTypeAliasElement alias = aliases[0];
1404 expect(alias, isNotNull); 1452 expect(alias, isNotNull);
1453 _assertHasCodeRange(alias, 50, 31);
1405 expect(alias.documentationComment, '/// aaa'); 1454 expect(alias.documentationComment, '/// aaa');
1406 _assertHasDocRange(alias, 50, 7); 1455 _assertHasDocRange(alias, 50, 7);
1407 expect(alias.name, aliasName); 1456 expect(alias.name, aliasName);
1408 expect(alias.parameters, hasLength(0)); 1457 expect(alias.parameters, hasLength(0));
1409 List<TypeParameterElement> typeParameters = alias.typeParameters; 1458 List<TypeParameterElement> typeParameters = alias.typeParameters;
1410 expect(typeParameters, hasLength(1)); 1459 expect(typeParameters, hasLength(1));
1411 TypeParameterElement typeParameter = typeParameters[0]; 1460 TypeParameterElement typeParameter = typeParameters[0];
1412 expect(typeParameter, isNotNull); 1461 expect(typeParameter, isNotNull);
1413 expect(typeParameter.name, parameterName); 1462 expect(typeParameter.name, parameterName);
1414 } 1463 }
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1550 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( 1599 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
1551 null, 1600 null,
1552 null, 1601 null,
1553 Keyword.GET, 1602 Keyword.GET,
1554 null, 1603 null,
1555 AstFactory.identifier3(methodName), 1604 AstFactory.identifier3(methodName),
1556 AstFactory.formalParameterList(), 1605 AstFactory.formalParameterList(),
1557 AstFactory.blockFunctionBody2()); 1606 AstFactory.blockFunctionBody2());
1558 methodDeclaration.documentationComment = AstFactory.documentationComment( 1607 methodDeclaration.documentationComment = AstFactory.documentationComment(
1559 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); 1608 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
1609 methodDeclaration.endToken.offset = 80;
1560 methodDeclaration.accept(builder); 1610 methodDeclaration.accept(builder);
1561 1611
1562 List<FieldElement> fields = holder.fields; 1612 List<FieldElement> fields = holder.fields;
1563 expect(fields, hasLength(1)); 1613 expect(fields, hasLength(1));
1564 FieldElement field = fields[0]; 1614 FieldElement field = fields[0];
1565 expect(field, isNotNull); 1615 expect(field, isNotNull);
1566 expect(field.name, methodName); 1616 expect(field.name, methodName);
1567 expect(field.isSynthetic, isTrue); 1617 expect(field.isSynthetic, isTrue);
1568 expect(field.setter, isNull); 1618 expect(field.setter, isNull);
1569 PropertyAccessorElement getter = field.getter; 1619 PropertyAccessorElement getter = field.getter;
1570 expect(getter, isNotNull); 1620 expect(getter, isNotNull);
1621 _assertHasCodeRange(getter, 50, 31);
1571 expect(getter.documentationComment, '/// aaa'); 1622 expect(getter.documentationComment, '/// aaa');
1572 _assertHasDocRange(getter, 50, 7); 1623 _assertHasDocRange(getter, 50, 7);
1573 expect(getter.hasImplicitReturnType, isTrue); 1624 expect(getter.hasImplicitReturnType, isTrue);
1574 expect(getter.isAbstract, isFalse); 1625 expect(getter.isAbstract, isFalse);
1575 expect(getter.isExternal, isFalse); 1626 expect(getter.isExternal, isFalse);
1576 expect(getter.isGetter, isTrue); 1627 expect(getter.isGetter, isTrue);
1577 expect(getter.isSynthetic, isFalse); 1628 expect(getter.isSynthetic, isFalse);
1578 expect(getter.name, methodName); 1629 expect(getter.name, methodName);
1579 expect(getter.variable, field); 1630 expect(getter.variable, field);
1580 expect(getter.functions, hasLength(0)); 1631 expect(getter.functions, hasLength(0));
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1666 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( 1717 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
1667 null, 1718 null,
1668 AstFactory.typeName4('T'), 1719 AstFactory.typeName4('T'),
1669 null, 1720 null,
1670 null, 1721 null,
1671 AstFactory.identifier3(methodName), 1722 AstFactory.identifier3(methodName),
1672 AstFactory.formalParameterList(), 1723 AstFactory.formalParameterList(),
1673 AstFactory.blockFunctionBody2()); 1724 AstFactory.blockFunctionBody2());
1674 methodDeclaration.documentationComment = AstFactory.documentationComment( 1725 methodDeclaration.documentationComment = AstFactory.documentationComment(
1675 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); 1726 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
1727 methodDeclaration.endToken.offset = 80;
1676 methodDeclaration.accept(builder); 1728 methodDeclaration.accept(builder);
1677 1729
1678 List<MethodElement> methods = holder.methods; 1730 List<MethodElement> methods = holder.methods;
1679 expect(methods, hasLength(1)); 1731 expect(methods, hasLength(1));
1680 MethodElement method = methods[0]; 1732 MethodElement method = methods[0];
1681 expect(method, isNotNull); 1733 expect(method, isNotNull);
1734 _assertHasCodeRange(method, 50, 31);
1682 expect(method.documentationComment, '/// aaa'); 1735 expect(method.documentationComment, '/// aaa');
1683 _assertHasDocRange(method, 50, 7); 1736 _assertHasDocRange(method, 50, 7);
1684 expect(method.hasImplicitReturnType, isFalse); 1737 expect(method.hasImplicitReturnType, isFalse);
1685 expect(method.name, methodName); 1738 expect(method.name, methodName);
1686 expect(method.functions, hasLength(0)); 1739 expect(method.functions, hasLength(0));
1687 expect(method.labels, hasLength(0)); 1740 expect(method.labels, hasLength(0));
1688 expect(method.localVariables, hasLength(0)); 1741 expect(method.localVariables, hasLength(0));
1689 expect(method.parameters, hasLength(0)); 1742 expect(method.parameters, hasLength(0));
1690 expect(method.typeParameters, hasLength(0)); 1743 expect(method.typeParameters, hasLength(0));
1691 expect(method.isAbstract, isFalse); 1744 expect(method.isAbstract, isFalse);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1735 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2( 1788 MethodDeclaration methodDeclaration = AstFactory.methodDeclaration2(
1736 null, 1789 null,
1737 null, 1790 null,
1738 Keyword.SET, 1791 Keyword.SET,
1739 null, 1792 null,
1740 AstFactory.identifier3(methodName), 1793 AstFactory.identifier3(methodName),
1741 AstFactory.formalParameterList(), 1794 AstFactory.formalParameterList(),
1742 AstFactory.blockFunctionBody2()); 1795 AstFactory.blockFunctionBody2());
1743 methodDeclaration.documentationComment = AstFactory.documentationComment( 1796 methodDeclaration.documentationComment = AstFactory.documentationComment(
1744 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []); 1797 [TokenFactory.tokenFromString('/// aaa')..offset = 50], []);
1798 methodDeclaration.endToken.offset = 80;
1745 methodDeclaration.accept(builder); 1799 methodDeclaration.accept(builder);
1746 1800
1747 List<FieldElement> fields = holder.fields; 1801 List<FieldElement> fields = holder.fields;
1748 expect(fields, hasLength(1)); 1802 expect(fields, hasLength(1));
1749 FieldElement field = fields[0]; 1803 FieldElement field = fields[0];
1750 expect(field, isNotNull); 1804 expect(field, isNotNull);
1751 expect(field.name, methodName); 1805 expect(field.name, methodName);
1752 expect(field.isSynthetic, isTrue); 1806 expect(field.isSynthetic, isTrue);
1753 expect(field.getter, isNull); 1807 expect(field.getter, isNull);
1754 1808
1755 PropertyAccessorElement setter = field.setter; 1809 PropertyAccessorElement setter = field.setter;
1756 expect(setter, isNotNull); 1810 expect(setter, isNotNull);
1811 _assertHasCodeRange(setter, 50, 31);
1757 expect(setter.documentationComment, '/// aaa'); 1812 expect(setter.documentationComment, '/// aaa');
1758 _assertHasDocRange(setter, 50, 7); 1813 _assertHasDocRange(setter, 50, 7);
1759 expect(setter.hasImplicitReturnType, isTrue); 1814 expect(setter.hasImplicitReturnType, isTrue);
1760 expect(setter.isAbstract, isFalse); 1815 expect(setter.isAbstract, isFalse);
1761 expect(setter.isExternal, isFalse); 1816 expect(setter.isExternal, isFalse);
1762 expect(setter.isSetter, isTrue); 1817 expect(setter.isSetter, isTrue);
1763 expect(setter.isSynthetic, isFalse); 1818 expect(setter.isSynthetic, isFalse);
1764 expect(setter.name, "$methodName="); 1819 expect(setter.name, "$methodName=");
1765 expect(setter.displayName, methodName); 1820 expect(setter.displayName, methodName);
1766 expect(setter.variable, field); 1821 expect(setter.variable, field);
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
1976 } 2031 }
1977 2032
1978 void test_visitNamedFormalParameter() { 2033 void test_visitNamedFormalParameter() {
1979 ElementHolder holder = new ElementHolder(); 2034 ElementHolder holder = new ElementHolder();
1980 ElementBuilder builder = _makeBuilder(holder); 2035 ElementBuilder builder = _makeBuilder(holder);
1981 String parameterName = "p"; 2036 String parameterName = "p";
1982 DefaultFormalParameter formalParameter = AstFactory.namedFormalParameter( 2037 DefaultFormalParameter formalParameter = AstFactory.namedFormalParameter(
1983 AstFactory.simpleFormalParameter3(parameterName), 2038 AstFactory.simpleFormalParameter3(parameterName),
1984 AstFactory.identifier3("42")); 2039 AstFactory.identifier3("42"));
1985 _useParameterInMethod(formalParameter, 100, 110); 2040 _useParameterInMethod(formalParameter, 100, 110);
2041 formalParameter.beginToken.offset = 50;
2042 formalParameter.endToken.offset = 80;
1986 formalParameter.accept(builder); 2043 formalParameter.accept(builder);
1987 List<ParameterElement> parameters = holder.parameters; 2044 List<ParameterElement> parameters = holder.parameters;
1988 expect(parameters, hasLength(1)); 2045 expect(parameters, hasLength(1));
1989 ParameterElement parameter = parameters[0]; 2046 ParameterElement parameter = parameters[0];
1990 expect(parameter, isNotNull); 2047 expect(parameter, isNotNull);
2048 _assertHasCodeRange(parameter, 50, 32);
1991 expect(parameter.name, parameterName); 2049 expect(parameter.name, parameterName);
1992 expect(parameter.isConst, isFalse); 2050 expect(parameter.isConst, isFalse);
1993 expect(parameter.isFinal, isFalse); 2051 expect(parameter.isFinal, isFalse);
1994 expect(parameter.isSynthetic, isFalse); 2052 expect(parameter.isSynthetic, isFalse);
1995 expect(parameter.parameterKind, ParameterKind.NAMED); 2053 expect(parameter.parameterKind, ParameterKind.NAMED);
1996 { 2054 {
1997 SourceRange visibleRange = parameter.visibleRange; 2055 SourceRange visibleRange = parameter.visibleRange;
1998 expect(100, visibleRange.offset); 2056 expect(100, visibleRange.offset);
1999 expect(110, visibleRange.end); 2057 expect(110, visibleRange.end);
2000 } 2058 }
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
2081 String firstParameterName = "x"; 2139 String firstParameterName = "x";
2082 String secondParameterName = "y"; 2140 String secondParameterName = "y";
2083 TypeAlias typeAlias = AstFactory.typeAlias( 2141 TypeAlias typeAlias = AstFactory.typeAlias(
2084 null, 2142 null,
2085 aliasName, 2143 aliasName,
2086 AstFactory.typeParameterList(), 2144 AstFactory.typeParameterList(),
2087 AstFactory.formalParameterList([ 2145 AstFactory.formalParameterList([
2088 AstFactory.simpleFormalParameter3(firstParameterName), 2146 AstFactory.simpleFormalParameter3(firstParameterName),
2089 AstFactory.simpleFormalParameter3(secondParameterName) 2147 AstFactory.simpleFormalParameter3(secondParameterName)
2090 ])); 2148 ]));
2149 typeAlias.beginToken.offset = 50;
2150 typeAlias.endToken.offset = 80;
2091 typeAlias.accept(builder); 2151 typeAlias.accept(builder);
2092 List<FunctionTypeAliasElement> aliases = holder.typeAliases; 2152 List<FunctionTypeAliasElement> aliases = holder.typeAliases;
2093 expect(aliases, hasLength(1)); 2153 expect(aliases, hasLength(1));
2094 FunctionTypeAliasElement alias = aliases[0]; 2154 FunctionTypeAliasElement alias = aliases[0];
2095 expect(alias, isNotNull); 2155 expect(alias, isNotNull);
2156 _assertHasCodeRange(alias, 50, 31);
2096 expect(alias.name, aliasName); 2157 expect(alias.name, aliasName);
2097 expect(alias.type, isNotNull); 2158 expect(alias.type, isNotNull);
2098 expect(alias.isSynthetic, isFalse); 2159 expect(alias.isSynthetic, isFalse);
2099 List<VariableElement> parameters = alias.parameters; 2160 List<VariableElement> parameters = alias.parameters;
2100 expect(parameters, hasLength(2)); 2161 expect(parameters, hasLength(2));
2101 expect(parameters[0].name, firstParameterName); 2162 expect(parameters[0].name, firstParameterName);
2102 expect(parameters[1].name, secondParameterName); 2163 expect(parameters[1].name, secondParameterName);
2103 List<TypeParameterElement> typeParameters = alias.typeParameters; 2164 List<TypeParameterElement> typeParameters = alias.typeParameters;
2104 expect(typeParameters, isNotNull); 2165 expect(typeParameters, isNotNull);
2105 expect(typeParameters, hasLength(0)); 2166 expect(typeParameters, hasLength(0));
(...skipping 26 matching lines...) Expand all
2132 expect(typeParameters, hasLength(2)); 2193 expect(typeParameters, hasLength(2));
2133 expect(typeParameters[0].name, firstTypeParameterName); 2194 expect(typeParameters[0].name, firstTypeParameterName);
2134 expect(typeParameters[1].name, secondTypeParameterName); 2195 expect(typeParameters[1].name, secondTypeParameterName);
2135 } 2196 }
2136 2197
2137 void test_visitTypeParameter() { 2198 void test_visitTypeParameter() {
2138 ElementHolder holder = new ElementHolder(); 2199 ElementHolder holder = new ElementHolder();
2139 ElementBuilder builder = _makeBuilder(holder); 2200 ElementBuilder builder = _makeBuilder(holder);
2140 String parameterName = "E"; 2201 String parameterName = "E";
2141 TypeParameter typeParameter = AstFactory.typeParameter(parameterName); 2202 TypeParameter typeParameter = AstFactory.typeParameter(parameterName);
2203 typeParameter.beginToken.offset = 50;
2142 typeParameter.accept(builder); 2204 typeParameter.accept(builder);
2143 List<TypeParameterElement> typeParameters = holder.typeParameters; 2205 List<TypeParameterElement> typeParameters = holder.typeParameters;
2144 expect(typeParameters, hasLength(1)); 2206 expect(typeParameters, hasLength(1));
2145 TypeParameterElement typeParameterElement = typeParameters[0]; 2207 TypeParameterElement typeParameterElement = typeParameters[0];
2146 expect(typeParameterElement, isNotNull); 2208 expect(typeParameterElement, isNotNull);
2209 _assertHasCodeRange(typeParameterElement, 50, 1);
2147 expect(typeParameterElement.name, parameterName); 2210 expect(typeParameterElement.name, parameterName);
2148 expect(typeParameterElement.bound, isNull); 2211 expect(typeParameterElement.bound, isNull);
2149 expect(typeParameterElement.isSynthetic, isFalse); 2212 expect(typeParameterElement.isSynthetic, isFalse);
2150 } 2213 }
2151 2214
2152 void test_visitVariableDeclaration_inConstructor() { 2215 void test_visitVariableDeclaration_inConstructor() {
2153 ElementHolder holder = new ElementHolder(); 2216 ElementHolder holder = new ElementHolder();
2154 ElementBuilder builder = _makeBuilder(holder); 2217 ElementBuilder builder = _makeBuilder(holder);
2155 // 2218 //
2156 // C() {var v;} 2219 // C() {var v;}
2157 // 2220 //
2158 String variableName = "v"; 2221 String variableName = "v";
2159 VariableDeclaration variable = 2222 VariableDeclaration variable =
2160 AstFactory.variableDeclaration2(variableName, null); 2223 AstFactory.variableDeclaration2(variableName, null);
2161 Statement statement = 2224 VariableDeclarationStatement statement =
2162 AstFactory.variableDeclarationStatement2(null, [variable]); 2225 AstFactory.variableDeclarationStatement2(Keyword.VAR, [variable]);
2163 ConstructorDeclaration constructor = AstFactory.constructorDeclaration2( 2226 ConstructorDeclaration constructor = AstFactory.constructorDeclaration2(
2164 null, 2227 null,
2165 null, 2228 null,
2166 AstFactory.identifier3("C"), 2229 AstFactory.identifier3("C"),
2167 "C", 2230 "C",
2168 AstFactory.formalParameterList(), 2231 AstFactory.formalParameterList(),
2169 null, 2232 null,
2170 AstFactory.blockFunctionBody2([statement])); 2233 AstFactory.blockFunctionBody2([statement]));
2234 statement.beginToken.offset = 50;
2235 statement.endToken.offset = 80;
2171 constructor.accept(builder); 2236 constructor.accept(builder);
2172 2237
2173 List<ConstructorElement> constructors = holder.constructors; 2238 List<ConstructorElement> constructors = holder.constructors;
2174 expect(constructors, hasLength(1)); 2239 expect(constructors, hasLength(1));
2175 List<LocalVariableElement> variableElements = 2240 List<LocalVariableElement> variableElements =
2176 constructors[0].localVariables; 2241 constructors[0].localVariables;
2177 expect(variableElements, hasLength(1)); 2242 expect(variableElements, hasLength(1));
2178 LocalVariableElement variableElement = variableElements[0]; 2243 LocalVariableElement variableElement = variableElements[0];
2244 _assertHasCodeRange(variableElement, 50, 31);
2179 expect(variableElement.hasImplicitType, isTrue); 2245 expect(variableElement.hasImplicitType, isTrue);
2180 expect(variableElement.name, variableName); 2246 expect(variableElement.name, variableName);
2181 } 2247 }
2182 2248
2183 void test_visitVariableDeclaration_inMethod() { 2249 void test_visitVariableDeclaration_inMethod() {
2184 ElementHolder holder = new ElementHolder(); 2250 ElementHolder holder = new ElementHolder();
2185 ElementBuilder builder = _makeBuilder(holder); 2251 ElementBuilder builder = _makeBuilder(holder);
2186 // 2252 //
2187 // m() {T v;} 2253 // m() {T v;}
2188 // 2254 //
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
2347 expect(variable.hasImplicitType, isTrue); 2413 expect(variable.hasImplicitType, isTrue);
2348 expect(variable.initializer, isNull); 2414 expect(variable.initializer, isNull);
2349 expect(variable.name, variableName); 2415 expect(variable.name, variableName);
2350 expect(variable.isConst, isFalse); 2416 expect(variable.isConst, isFalse);
2351 expect(variable.isFinal, isTrue); 2417 expect(variable.isFinal, isTrue);
2352 expect(variable.isSynthetic, isFalse); 2418 expect(variable.isSynthetic, isFalse);
2353 expect(variable.getter, isNotNull); 2419 expect(variable.getter, isNotNull);
2354 expect(variable.setter, isNull); 2420 expect(variable.setter, isNull);
2355 } 2421 }
2356 2422
2423 void _assertHasCodeRange(Element element, int offset, int length) {
2424 ElementImpl elementImpl = element;
2425 expect(elementImpl.codeOffset, offset);
2426 expect(elementImpl.codeLength, length);
2427 }
2428
2357 void _assertHasDocRange( 2429 void _assertHasDocRange(
2358 Element element, int expectedOffset, int expectedLength) { 2430 Element element, int expectedOffset, int expectedLength) {
2359 // Cast to dynamic here to avoid a hint about @deprecated docRange. 2431 // Cast to dynamic here to avoid a hint about @deprecated docRange.
2360 SourceRange docRange = (element as dynamic).docRange; 2432 SourceRange docRange = (element as dynamic).docRange;
2361 expect(docRange, isNotNull); 2433 expect(docRange, isNotNull);
2362 expect(docRange.offset, expectedOffset); 2434 expect(docRange.offset, expectedOffset);
2363 expect(docRange.length, expectedLength); 2435 expect(docRange.length, expectedLength);
2364 } 2436 }
2365 2437
2366 ElementBuilder _makeBuilder(ElementHolder holder) => 2438 ElementBuilder _makeBuilder(ElementHolder holder) =>
(...skipping 1762 matching lines...) Expand 10 before | Expand all | Expand 10 after
4129 expect(UriKind.fromEncoding(0x70), same(UriKind.PACKAGE_URI)); 4201 expect(UriKind.fromEncoding(0x70), same(UriKind.PACKAGE_URI));
4130 expect(UriKind.fromEncoding(0x58), same(null)); 4202 expect(UriKind.fromEncoding(0x58), same(null));
4131 } 4203 }
4132 4204
4133 void test_getEncoding() { 4205 void test_getEncoding() {
4134 expect(UriKind.DART_URI.encoding, 0x64); 4206 expect(UriKind.DART_URI.encoding, 0x64);
4135 expect(UriKind.FILE_URI.encoding, 0x66); 4207 expect(UriKind.FILE_URI.encoding, 0x66);
4136 expect(UriKind.PACKAGE_URI.encoding, 0x70); 4208 expect(UriKind.PACKAGE_URI.encoding, 0x70);
4137 } 4209 }
4138 } 4210 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698