1 16 package com.google.gwt.dev.jjs.ast.js; 17 18 import com.google.gwt.dev.jjs.ast.Context; 19 import com.google.gwt.dev.jjs.ast.JExpression; 20 import com.google.gwt.dev.jjs.ast.JNode; 21 import com.google.gwt.dev.jjs.ast.JProgram; 22 import com.google.gwt.dev.jjs.ast.JType; 23 import com.google.gwt.dev.jjs.ast.JVisitor; 24 25 import java.util.ArrayList ; 26 import java.util.List ; 27 28 31 public class JsonObject extends JExpression { 32 33 36 public static class JsonPropInit extends JNode { 37 38 public JExpression labelExpr; 39 public JExpression valueExpr; 40 41 public JsonPropInit(JProgram program, JExpression labelExpr, 42 JExpression valueExpr) { 43 super(program, null); 44 this.labelExpr = labelExpr; 45 this.valueExpr = valueExpr; 46 } 47 48 public void traverse(JVisitor visitor, Context ctx) { 49 if (visitor.visit(this, ctx)) { 50 labelExpr = visitor.accept(labelExpr); 51 valueExpr = visitor.accept(valueExpr); 52 } 53 visitor.endVisit(this, ctx); 54 } 55 } 56 57 public final List propInits = new ArrayList (); 58 59 public JsonObject(JProgram program) { 60 super(program, null); 61 } 62 63 public JType getType() { 64 return program.getTypeVoid(); 65 } 66 67 public boolean hasSideEffects() { 68 for (int i = 0, c = propInits.size(); i < c; ++i) { 69 JsonPropInit propInit = ((JsonPropInit) propInits.get(i)); 70 if (propInit.labelExpr.hasSideEffects() 71 || propInit.valueExpr.hasSideEffects()) { 72 return true; 73 } 74 } 75 return false; 76 } 77 78 public void traverse(JVisitor visitor, Context ctx) { 79 if (visitor.visit(this, ctx)) { 80 visitor.accept(propInits); 81 } 82 visitor.endVisit(this, ctx); 83 } 84 85 } 86 | Popular Tags |