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

Side by Side Diff: frog/evaluator.dart

Issue 8681027: Fix bug 578 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: prereviewed Created 9 years 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/element.dart ('k') | frog/frogsh » ('j') | 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) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 5
6 #import('file_system.dart'); 6 #import('file_system.dart');
7 #import('lang.dart'); 7 #import('lang.dart');
8 8
9 interface JsEvaluator { 9 interface JsEvaluator {
10 var eval(String source); 10 var eval(String source);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 _lib.resolve(); 57 _lib.resolve();
58 } 58 }
59 59
60 void _ensureVariableDefined(Identifier name, [List<Token> modifiers = [], 60 void _ensureVariableDefined(Identifier name, [List<Token> modifiers = [],
61 TypeReference type = null]) { 61 TypeReference type = null]) {
62 var member = _lib.topType.getMember(name.name); 62 var member = _lib.topType.getMember(name.name);
63 if (member is FieldMember || member is PropertyMember) return; 63 if (member is FieldMember || member is PropertyMember) return;
64 _removeMember(name.name); 64 _removeMember(name.name);
65 _lib.topType.addField( 65 _lib.topType.addField(
66 new VariableDefinition(modifiers, type, [name], [null], name.span)); 66 new VariableDefinition(modifiers, type, [name], [null], name.span));
67 _lib.topType.getMember(name.name).resolve(_lib.topType); 67 _lib.topType.getMember(name.name).resolve();
68 } 68 }
69 69
70 var eval(String dart) { 70 var eval(String dart) {
71 var source = new SourceFile("_ifrog_", dart); 71 var source = new SourceFile("_ifrog_", dart);
72 world.gen.writer = new CodeWriter(); 72 world.gen.writer = new CodeWriter();
73 73
74 var code; 74 var code;
75 var parsed = new Parser(source, throwOnIncomplete: true, 75 var parsed = new Parser(source, throwOnIncomplete: true,
76 optionalSemicolons: true).evalUnit(); 76 optionalSemicolons: true).evalUnit();
77 var method = new MethodMember("_ifrog_dummy", _lib.topType, null); 77 var method = new MethodMember("_ifrog_dummy", _lib.topType, null);
(...skipping 18 matching lines...) Expand all
96 new VarExpression(name, name.span), value, parsed.span); 96 new VarExpression(name, name.span), value, parsed.span);
97 new ExpressionStatement(expr, parsed.span).visit(methGen); 97 new ExpressionStatement(expr, parsed.span).visit(methGen);
98 }); 98 });
99 code = methGen.writer.text; 99 code = methGen.writer.text;
100 100
101 } else if (parsed is FunctionDefinition) { 101 } else if (parsed is FunctionDefinition) {
102 var methodName = parsed.name.name; 102 var methodName = parsed.name.name;
103 _removeMember(methodName); 103 _removeMember(methodName);
104 _lib.topType.addMethod(methodName, parsed); 104 _lib.topType.addMethod(methodName, parsed);
105 MethodMember definedMethod = _lib.topType.getMember(methodName); 105 MethodMember definedMethod = _lib.topType.getMember(methodName);
106 definedMethod.resolve(_lib.topType); 106 definedMethod.resolve();
107 var definedMethGen = new MethodGenerator(definedMethod, null); 107 var definedMethGen = new MethodGenerator(definedMethod, null);
108 definedMethGen.run(); 108 definedMethGen.run();
109 definedMethGen.writeDefinition(world.gen.writer, null); 109 definedMethGen.writeDefinition(world.gen.writer, null);
110 code = world.gen.writer.text; 110 code = world.gen.writer.text;
111 } else if (parsed is TypeDefinition) { 111 } else if (parsed is TypeDefinition) {
112 _removeMember(parsed.name.name); 112 _removeMember(parsed.name.name);
113 var type = _lib.addType(parsed.name.name, parsed, parsed.isClass); 113 var type = _lib.addType(parsed.name.name, parsed, parsed.isClass);
114 type.resolve(); 114 type.resolve();
115 world.gen.writeType(type); 115 world.gen.writeType(type);
116 code = world.gen.writer.text; 116 code = world.gen.writer.text;
117 } else { 117 } else {
118 parsed.visit(methGen); 118 parsed.visit(methGen);
119 code = methGen.writer.text; 119 code = methGen.writer.text;
120 } 120 }
121 121
122 return this._jsEvaluator.eval(code); 122 return this._jsEvaluator.eval(code);
123 } 123 }
124 } 124 }
OLDNEW
« no previous file with comments | « frog/element.dart ('k') | frog/frogsh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698