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

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

Issue 1839443002: Fix for labels and the 'inDeclarationContext' flag. (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
« no previous file with comments | « pkg/analyzer/lib/src/generated/parser.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.parser_test; 5 library analyzer.test.generated.parser_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/ast/visitor.dart'; 9 import 'package:analyzer/dart/ast/visitor.dart';
10 import 'package:analyzer/src/dart/ast/token.dart'; 10 import 'package:analyzer/src/dart/ast/token.dart';
(...skipping 9725 matching lines...) Expand 10 before | Expand all | Expand 10 after
9736 expect(statement.statement, isNotNull); 9736 expect(statement.statement, isNotNull);
9737 } 9737 }
9738 9738
9739 void test_parseStatement_noLabels() { 9739 void test_parseStatement_noLabels() {
9740 parse4("parseStatement", "return x;"); 9740 parse4("parseStatement", "return x;");
9741 } 9741 }
9742 9742
9743 void test_parseStatement_singleLabel() { 9743 void test_parseStatement_singleLabel() {
9744 LabeledStatement statement = parse4("parseStatement", "l: return x;"); 9744 LabeledStatement statement = parse4("parseStatement", "l: return x;");
9745 expect(statement.labels, hasLength(1)); 9745 expect(statement.labels, hasLength(1));
9746 expect(statement.labels[0].label.inDeclarationContext(), isTrue);
9746 expect(statement.statement, isNotNull); 9747 expect(statement.statement, isNotNull);
9747 } 9748 }
9748 9749
9749 void test_parseStatements_multiple() { 9750 void test_parseStatements_multiple() {
9750 List<Statement> statements = 9751 List<Statement> statements =
9751 ParserTestCase.parseStatements("return; return;", 2); 9752 ParserTestCase.parseStatements("return; return;", 2);
9752 expect(statements, hasLength(2)); 9753 expect(statements, hasLength(2));
9753 } 9754 }
9754 9755
9755 void test_parseStatements_single() { 9756 void test_parseStatements_single() {
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
10006 10007
10007 void test_parseSwitchStatement_labeledCase() { 10008 void test_parseSwitchStatement_labeledCase() {
10008 SwitchStatement statement = 10009 SwitchStatement statement =
10009 parse4("parseSwitchStatement", "switch (a) {l1: l2: l3: case(1):}"); 10010 parse4("parseSwitchStatement", "switch (a) {l1: l2: l3: case(1):}");
10010 expect(statement.switchKeyword, isNotNull); 10011 expect(statement.switchKeyword, isNotNull);
10011 expect(statement.leftParenthesis, isNotNull); 10012 expect(statement.leftParenthesis, isNotNull);
10012 expect(statement.expression, isNotNull); 10013 expect(statement.expression, isNotNull);
10013 expect(statement.rightParenthesis, isNotNull); 10014 expect(statement.rightParenthesis, isNotNull);
10014 expect(statement.leftBracket, isNotNull); 10015 expect(statement.leftBracket, isNotNull);
10015 expect(statement.members, hasLength(1)); 10016 expect(statement.members, hasLength(1));
10016 expect(statement.members[0].labels, hasLength(3)); 10017 {
10018 List<Label> labels = statement.members[0].labels;
10019 expect(labels, hasLength(3));
10020 expect(labels[0].label.inDeclarationContext(), isTrue);
10021 expect(labels[1].label.inDeclarationContext(), isTrue);
10022 expect(labels[2].label.inDeclarationContext(), isTrue);
10023 }
10017 expect(statement.rightBracket, isNotNull); 10024 expect(statement.rightBracket, isNotNull);
10018 } 10025 }
10019 10026
10027 void test_parseSwitchStatement_labeledDefault() {
10028 SwitchStatement statement =
10029 parse4("parseSwitchStatement", "switch (a) {l1: l2: l3: default:}");
10030 expect(statement.switchKeyword, isNotNull);
10031 expect(statement.leftParenthesis, isNotNull);
10032 expect(statement.expression, isNotNull);
10033 expect(statement.rightParenthesis, isNotNull);
10034 expect(statement.leftBracket, isNotNull);
10035 expect(statement.members, hasLength(1));
10036 {
10037 List<Label> labels = statement.members[0].labels;
10038 expect(labels, hasLength(3));
10039 expect(labels[0].label.inDeclarationContext(), isTrue);
10040 expect(labels[1].label.inDeclarationContext(), isTrue);
10041 expect(labels[2].label.inDeclarationContext(), isTrue);
10042 }
10043 expect(statement.rightBracket, isNotNull);
10044 }
10045
10020 void test_parseSwitchStatement_labeledStatementInCase() { 10046 void test_parseSwitchStatement_labeledStatementInCase() {
10021 SwitchStatement statement = parse4( 10047 SwitchStatement statement = parse4(
10022 "parseSwitchStatement", "switch (a) {case 0: f(); l1: g(); break;}"); 10048 "parseSwitchStatement", "switch (a) {case 0: f(); l1: g(); break;}");
10023 expect(statement.switchKeyword, isNotNull); 10049 expect(statement.switchKeyword, isNotNull);
10024 expect(statement.leftParenthesis, isNotNull); 10050 expect(statement.leftParenthesis, isNotNull);
10025 expect(statement.expression, isNotNull); 10051 expect(statement.expression, isNotNull);
10026 expect(statement.rightParenthesis, isNotNull); 10052 expect(statement.rightParenthesis, isNotNull);
10027 expect(statement.leftBracket, isNotNull); 10053 expect(statement.leftBracket, isNotNull);
10028 expect(statement.members, hasLength(1)); 10054 expect(statement.members, hasLength(1));
10029 expect(statement.members[0].statements, hasLength(3)); 10055 expect(statement.members[0].statements, hasLength(3));
(...skipping 954 matching lines...) Expand 10 before | Expand all | Expand 10 after
10984 new Scanner(null, new CharSequenceReader(source), listener); 11010 new Scanner(null, new CharSequenceReader(source), listener);
10985 Token tokenStream = scanner.tokenize(); 11011 Token tokenStream = scanner.tokenize();
10986 // 11012 //
10987 // Parse the source. 11013 // Parse the source.
10988 // 11014 //
10989 Parser parser = new Parser(null, listener); 11015 Parser parser = new Parser(null, listener);
10990 return invokeParserMethodImpl( 11016 return invokeParserMethodImpl(
10991 parser, methodName, <Object>[tokenStream], tokenStream) as Token; 11017 parser, methodName, <Object>[tokenStream], tokenStream) as Token;
10992 } 11018 }
10993 } 11019 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/generated/parser.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698