Changeset 1199
- Timestamp:
- 06/29/08 13:21:02 (6 months ago)
- Files:
-
- trunk/descent.core/src/descent/internal/codeassist/EvaluationEngine.java (modified) (4 diffs)
- trunk/descent.core/src/descent/internal/compiler/SourceElementParser.java (modified) (6 diffs)
- trunk/descent.core/src/descent/internal/compiler/lookup/ModuleBuilder.java (modified) (1 diff)
- trunk/descent.core/src/descent/internal/compiler/parser/ASTNodeEncoder.java (modified) (2 diffs)
- trunk/descent.core/src/descent/internal/compiler/parser/ArrayInitializer.java (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/descent.core/src/descent/internal/codeassist/EvaluationEngine.java
r1198 r1199 20 20 import descent.internal.compiler.parser.CallExp; 21 21 import descent.internal.compiler.parser.ComplexExp; 22 import descent.internal.compiler.parser.Declaration; 22 23 import descent.internal.compiler.parser.EnumDeclaration; 23 24 import descent.internal.compiler.parser.EnumMember; … … 32 33 import descent.internal.compiler.parser.SemanticContext; 33 34 import descent.internal.compiler.parser.StringExp; 35 import descent.internal.compiler.parser.StructInitializer; 34 36 import descent.internal.compiler.parser.StructLiteralExp; 35 37 import descent.internal.compiler.parser.Type; 36 38 import descent.internal.compiler.parser.TypeEnum; 37 39 import descent.internal.compiler.parser.VarDeclaration; 40 import descent.internal.compiler.parser.VarExp; 38 41 import descent.internal.compiler.parser.integer_t; 39 42 import descent.internal.compiler.parser.real_t; … … 144 147 ExpInitializer expInit = (ExpInitializer) init; 145 148 evalExp(expInit.exp); 149 } else if (init.isStructInitializer() != null) { 150 StructInitializer structInit = (StructInitializer) init; 151 152 String name = structInit.ad.ident.toChars(); 153 String[] names = new String[structInit.ad.fields.size()]; 154 for (int i = 0; i < names.length; i++) { 155 names[i] = structInit.ad.fields.get(i).ident.toChars(); 156 } 157 IEvaluationResult[] values = new IEvaluationResult[structInit.value.size()]; 158 for (int i = 0; i < values.length; i++) { 159 evalInit(structInit.value.get(i)); 160 values[i] = result; 161 } 162 163 StructLiteral sl = new StructLiteral(name, names, values); 164 result = new EvaluationResult(sl, IEvaluationResult.STRUCT_LITERAL); 165 146 166 } else if (init.isArrayInitializer() != null) { 147 167 ArrayInitializer arrayInit = (ArrayInitializer) init; … … 169 189 } else if (exp instanceof NegExp) { 170 190 // evalExp(((NegExp) exp).e1); 191 } else if (exp instanceof VarExp) { 192 Declaration decl = ((VarExp) exp).var; 193 if (decl instanceof VarDeclaration) { 194 VarDeclaration var = (VarDeclaration) decl; 195 if (var.isConst()) { 196 evalInit(var.init); 197 } 198 } 171 199 } else if (exp instanceof StructLiteralExp) { 172 200 StructLiteralExp sle = (StructLiteralExp) exp; trunk/descent.core/src/descent/internal/compiler/SourceElementParser.java
r1198 r1199 25 25 import descent.internal.compiler.impl.CompilerOptions; 26 26 import descent.internal.compiler.parser.*; 27 import descent.internal.compiler.parser.ast.ASTNode; 27 28 import descent.internal.compiler.parser.ast.AstVisitorAdapter; 28 29 import descent.internal.compiler.parser.ast.NaiveASTFlattener; … … 620 621 621 622 info.type = getSignature(node.type); 622 info.initializationSource = encode r.encodeInitializer(node.init);623 info.initializationSource = encode(node.init); 623 624 624 625 requestor.enterField(info); … … 627 628 } 628 629 630 private char[] encode(ASTDmdNode node) { 631 if (node == null) { 632 return null; 633 } 634 635 char[] value = new char[node.length]; 636 System.arraycopy(source, node.start, value, 0, node.length); 637 return ASTNodeEncoder.encoderForIndexer(value); 638 } 639 629 640 @Override 630 641 public boolean visit(AliasDeclaration node) { … … 689 700 @Override 690 701 public boolean visit(StaticAssert node) { 691 requestor.enterInitializer(startOfDeclaration(node), getFlags(node, node.modifiers) | Flags.AccStaticAssert, encode r.encodeExpression(node.exp));702 requestor.enterInitializer(startOfDeclaration(node), getFlags(node, node.modifiers) | Flags.AccStaticAssert, encode(node.exp)); 692 703 return false; 693 704 } … … 788 799 } 789 800 790 info.initializationSource = encode r.encodeExpression(node.value);801 info.initializationSource = encode(node.value); 791 802 792 803 requestor.enterField(info); … … 820 831 @Override 821 832 public boolean visit(CompileDeclaration node) { 822 requestor.enterInitializer(startOf(node), getFlags(node, node.modifiers) | Flags.AccMixin, encode r.encodeExpression(node.exp));833 requestor.enterInitializer(startOf(node), getFlags(node, node.modifiers) | Flags.AccMixin, encode(node.exp)); 823 834 return false; 824 835 } trunk/descent.core/src/descent/internal/compiler/lookup/ModuleBuilder.java
r1198 r1199 91 91 * Whether to make surface Module semantic. 92 92 */ 93 public boolean LAZY_MODULES = true;93 public boolean LAZY_MODULES = false; 94 94 95 95 /* trunk/descent.core/src/descent/internal/compiler/parser/ASTNodeEncoder.java
r1163 r1199 11 11 public class ASTNodeEncoder { 12 12 13 private char[] nastyChar = { '/' };14 private char[] nastyCharSoltuion = { '*', '!', '_', '!', '*' };13 private final static char[] nastyChar = { '/' }; 14 private final static char[] nastyCharSoltuion = { '*', '!', '_', '!', '*' }; 15 15 16 16 private Parser parser; … … 33 33 // string, and then replace it back later 34 34 35 p rivatechar[] encoderForIndexer(char[] value) {35 public static char[] encoderForIndexer(char[] value) { 36 36 if (CharOperation.indexOf('/', value) != -1) { 37 37 return CharOperation.replace(value, nastyChar, nastyCharSoltuion); trunk/descent.core/src/descent/internal/compiler/parser/ArrayInitializer.java
r1189 r1199 33 33 public void addInit(Expression index, Initializer value) { 34 34 if (value == null) { 35 System.out.println( );35 System.out.println(123456); 36 36 } 37 37 … … 143 143 } 144 144 } 145 145 146 if (new integer_t(dim).multiply(t.next.size(context)).compareTo(amax) >= 0) { 146 147 if (context.acceptsProblems()) { … … 172 173 173 174 Initializer init = value.get(i); 175 if (init == null) { 176 System.out.println(123456); 177 } 174 178 init = init.syntaxCopy(context); 175 179 ai.value.set(i, init);
