Node createComputedProperty(Node key, Node value) { Node result = IR.computedProp(key, value); if (isAddingTypes()) { result.setJSType(value.getJSType()); } return result; }
/** * Adds a computed property method, with the name of the marker, to the class. * * <pre>{@code * class C { * ['instance_of__C']() {} * } * }</pre> */ private Node addMarkerToClass(String markerName, @Nullable String unused, Node classMembers) { Node function = IR.function(IR.name(""), IR.paramList(), IR.block()); Node member = IR.computedProp(IR.string(markerName), function); member.putBooleanProp(Node.COMPUTED_PROP_METHOD, true); classMembers.addChildToBack(member); compiler.reportChangeToEnclosingScope(member); compiler.reportChangeToChangeScope(function); NodeUtil.addFeatureToScript(traversal.getCurrentScript(), Feature.COMPUTED_PROPERTIES); return classMembers; }
private void addKeyValueToObjLit(Node objNode, Node keyNode, Node valueNode) { if (keyNode.isNumber() || keyNode.isString()) { if (keyNode.isNumber()) { keyNode = IR.string(numberToString(keyNode.getDouble())) .srcref(keyNode); } keyNode.setToken(Token.STRING_KEY); keyNode.setQuotedString(); objNode.addChildToBack(IR.propdef(keyNode, valueNode)); } else { objNode.addChildToBack(IR.computedProp(keyNode, valueNode).srcref(keyNode)); } }
IR.stringKey("enumerable", IR.trueNode())); if (member.isComputedProp()) { obj.addChildToBack(IR.computedProp(member.getFirstChild().cloneTree(), prop)); } else { obj.addChildToBack(IR.stringKey(member.getString(), prop));