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

Side by Side Diff: frog/tests/leg/parser_helper.dart

Issue 10536169: Move frog/tests/{leg,leg_only,frog_native} to tests/compiler/. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « frog/tests/leg/parameter_phi_elimination_test.dart ('k') | frog/tests/leg/parser_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
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.
4
5 #library('parser_helper');
6
7 #import("dart:uri");
8
9 #import("../../../lib/compiler/implementation/elements/elements.dart");
10 #import("../../../lib/compiler/implementation/tree/tree.dart");
11 #import('../../../lib/compiler/implementation/scanner/scannerlib.dart');
12 #import("../../../lib/compiler/implementation/leg.dart");
13 #import("../../../lib/compiler/implementation/util/util.dart");
14
15 class LoggerCanceler implements DiagnosticListener {
16 void cancel([String reason, node, token, instruction, element]) {
17 throw new CompilerCancelledException(reason);
18 }
19
20 void log(message) {
21 print(message);
22 }
23 }
24
25 Token scan(String text) => new StringScanner(text).tokenize();
26
27 Node parseBodyCode(String text, Function parseMethod) {
28 Token tokens = scan(text);
29 LoggerCanceler lc = new LoggerCanceler();
30 NodeListener listener = new NodeListener(lc, null);
31 Parser parser = new Parser(listener);
32 Token endToken = parseMethod(parser, tokens);
33 assert(endToken.kind == EOF_TOKEN);
34 Node node = listener.popNode();
35 Expect.isNotNull(node);
36 Expect.isTrue(listener.nodes.isEmpty(), 'Not empty: ${listener.nodes}');
37 return node;
38 }
39
40 Node parseStatement(String text) =>
41 parseBodyCode(text, (parser, tokens) => parser.parseStatement(tokens));
42
43 Node parseFunction(String text, Compiler compiler) {
44 Element element = parseUnit(text, compiler, compiler.mainApp).head;
45 Expect.isNotNull(element);
46 Expect.equals(ElementKind.FUNCTION, element.kind);
47 return element.parseNode(compiler);
48 }
49
50 class MockFile {
51 final filename = '<string>';
52 final text;
53 MockFile(this.text);
54 }
55
56 Link<Element> parseUnit(String text, Compiler compiler,
57 LibraryElement library) {
58 Token tokens = scan(text);
59 Uri uri = new Uri(scheme: "source");
60 var script = new Script(uri, new MockFile(text));
61 var unit = new CompilationUnitElement(script, library);
62 int id = 0;
63 ElementListener listener = new ElementListener(compiler, unit, () => id++);
64 PartialParser parser = new PartialParser(listener);
65 compiler.withCurrentElement(unit, () => parser.parseUnit(tokens));
66 return unit.topLevelElements;
67 }
68
69 // TODO(ahe): We define this method to avoid having to import
70 // the scanner in the tests. We should move SourceString to another
71 // location instead.
72 SourceString buildSourceString(String name) {
73 return new SourceString(name);
74 }
OLDNEW
« no previous file with comments | « frog/tests/leg/parameter_phi_elimination_test.dart ('k') | frog/tests/leg/parser_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698