本文整理汇总了Java中org.mozilla.javascript.ast.ObjectLiteral类的典型用法代码示例。如果您正苦于以下问题:Java ObjectLiteral类的具体用法?Java ObjectLiteral怎么用?Java ObjectLiteral使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ObjectLiteral类属于org.mozilla.javascript.ast包,在下文中一共展示了ObjectLiteral类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: decompileObjectLiteral
import org.mozilla.javascript.ast.ObjectLiteral; //导入依赖的package包/类
void decompileObjectLiteral(ObjectLiteral node) {
decompiler.addToken(Token.LC);
List<ObjectProperty> props = node.getElements();
int size = props.size();
for (int i = 0; i < size; i++) {
ObjectProperty prop = props.get(i);
boolean destructuringShorthand =
Boolean.TRUE.equals(prop.getProp(Node.DESTRUCTURING_SHORTHAND));
decompile(prop.getLeft());
if (!destructuringShorthand) {
decompiler.addToken(Token.COLON);
decompile(prop.getRight());
}
if (i < size - 1) {
decompiler.addToken(Token.COMMA);
}
}
decompiler.addToken(Token.RC);
}
示例2: getPropertyNames
import org.mozilla.javascript.ast.ObjectLiteral; //导入依赖的package包/类
public List<String> getPropertyNames(){
List<String> propNames = new ArrayList<String>();
ObjectLiteral ol = (ObjectLiteral)this.getNode();
for (ObjectProperty op : ol.getElements()){
AstNode left = op.getLeft();
if (left instanceof Name){
propNames.add(((Name)left).getIdentifier());
} else if (left instanceof StringLiteral){
String identifier = ConstraintGenUtil.removeQuotes(((StringLiteral)left).toSource());
propNames.add(identifier);
} else {
System.err.println(left.getClass().getName() + " " + left.toSource());
throw new Error("unsupported case in getPropertyNames()");
}
}
return propNames;
}
示例3: getPropertyNames
import org.mozilla.javascript.ast.ObjectLiteral; //导入依赖的package包/类
public static List<String> getPropertyNames(ObjectLiteral ol){
List<String> propNames = new ArrayList<String>();
for (ObjectProperty op : ol.getElements()){
AstNode left = op.getLeft();
if (left instanceof Name){
propNames.add(((Name)left).getIdentifier());
} else if (left instanceof StringLiteral){
String identifier = ConstraintGenUtil.removeQuotes(((StringLiteral)left).toSource());
propNames.add(identifier);
} else {
System.err.println(left.getClass().getName() + " " + left.toSource());
throw new Error("unsupported case in getPropertyNames()");
}
}
return propNames;
}
示例4: processObjectLiteralForObject
import org.mozilla.javascript.ast.ObjectLiteral; //导入依赖的package包/类
/**
* Create constraints for an object literal.
*/
private ITypeTerm processObjectLiteralForObject(ObjectLiteral n) {
ITypeTerm expTerm = findOrCreateObjectLiteralTerm(n);
ObjectLiteral o = (ObjectLiteral)n;
for (ObjectProperty prop : o.getElements()){
AstNode left = prop.getLeft();
AstNode right = prop.getRight();
if (left instanceof Name){
String identifier = ((Name)left).getIdentifier();
// for object literal o = { name_1 : exp_1, ..., name_k : exp_k } generate
// a constraint |exp_i| <: prop(|o|, name_i)
ITypeTerm propTerm = findOrCreatePropertyAccessTerm(expTerm, identifier, null);
ITypeTerm valTerm = processExpression(right);
processCopy(right, valTerm, propTerm, n.getLineno(), null);
}
}
return expTerm;
}
示例5: processObjectLiteralForMap
import org.mozilla.javascript.ast.ObjectLiteral; //导入依赖的package包/类
/**
* Create constraints for a map literal.
*/
private ITypeTerm processObjectLiteralForMap(ObjectLiteral o) {
ITypeTerm expTerm = findOrCreateMapLiteralTerm(o);
for (ObjectProperty prop : o.getElements()){
AstNode left = prop.getLeft();
AstNode right = prop.getRight();
if (left instanceof StringLiteral){
// for map literal o = { name_1 : exp_1, ..., name_k : exp_k } generate
// a constraint |exp_i| <: MapElem(|o|)
ITypeTerm mapAccessTerm = findOrCreateIndexedTerm(expTerm, o.getLineno());
ITypeTerm valTerm = processExpression(right);
processCopy(right, valTerm, mapAccessTerm,
o.getLineno(), (solution) ->
genericTypeError("map does not have a homogenous value type", locationOf(prop))
.withNote("map value type is " + describeTypeOf(mapAccessTerm, solution))
.withNote("key " + left.toSource() + " has type " + describeTypeOf(valTerm, solution)));
}
}
return expTerm;
}
示例6: visitPrototypeMembers
import org.mozilla.javascript.ast.ObjectLiteral; //导入依赖的package包/类
private void visitPrototypeMembers(ObjectLiteral objLiteral,
String clazz) {
List<ObjectProperty> properties = objLiteral.getElements();
for (ObjectProperty property : properties) {
AstNode propertyKey = property.getLeft();
JavaScriptTreeNode tn = createTreeNode(propertyKey);
String memberName = RhinoUtil.getPropertyName(propertyKey);
AstNode propertyValue = property.getRight();
visitPrototypeMember(tn, clazz,
memberName, propertyValue);
}
}
示例7: decompile
import org.mozilla.javascript.ast.ObjectLiteral; //导入依赖的package包/类
void decompile(AstNode node) {
switch (node.getType()) {
case Token.ARRAYLIT:
decompileArrayLiteral((ArrayLiteral)node);
break;
case Token.OBJECTLIT:
decompileObjectLiteral((ObjectLiteral)node);
break;
case Token.STRING:
decompiler.addString(((StringLiteral)node).getValue());
break;
case Token.NAME:
decompiler.addName(((Name)node).getIdentifier());
break;
case Token.NUMBER:
decompiler.addNumber(((NumberLiteral)node).getNumber());
break;
case Token.GETPROP:
decompilePropertyGet((PropertyGet)node);
break;
case Token.EMPTY:
break;
case Token.GETELEM:
decompileElementGet((ElementGet) node);
break;
case Token.THIS:
decompiler.addToken(node.getType());
break;
default:
Kit.codeBug("unexpected token: "
+ Token.typeToName(node.getType()));
}
}
示例8: arrowFunctionParams
import org.mozilla.javascript.ast.ObjectLiteral; //导入依赖的package包/类
private void arrowFunctionParams(FunctionNode fnNode, AstNode params, Map<String, Node> destructuring, Set<String> paramNames) {
if (params instanceof ArrayLiteral || params instanceof ObjectLiteral) {
markDestructuring(params);
fnNode.addParam(params);
String pname = currentScriptOrFn.getNextTempName();
defineSymbol(Token.LP, pname, false);
destructuring.put(pname, params);
} else if (params instanceof InfixExpression && params.getType() == Token.COMMA) {
arrowFunctionParams(fnNode, ((InfixExpression)params).getLeft(), destructuring, paramNames);
arrowFunctionParams(fnNode, ((InfixExpression)params).getRight(), destructuring, paramNames);
} else if (params instanceof Name) {
fnNode.addParam(params);
String paramName = ((Name)params).getIdentifier();
defineSymbol(Token.LP, paramName);
if (this.inUseStrictDirective) {
if ("eval".equals(paramName) ||
"arguments".equals(paramName))
{
reportError("msg.bad.id.strict", paramName);
}
if (paramNames.contains(paramName))
addError("msg.dup.param.strict", paramName);
paramNames.add(paramName);
}
} else {
reportError("msg.no.parm", params.getPosition(), params.getLength());
fnNode.addParam(makeErrorNode());
}
}
示例9: ObjectLiteralTerm
import org.mozilla.javascript.ast.ObjectLiteral; //导入依赖的package包/类
public ObjectLiteralTerm(ObjectLiteral n){
super(n);
ObjectType oType = new ObjectType(this.getPropertyNames().stream()
.map((s) -> new Property(s, new AnyType(), false))
.collect(Collectors.toList()));
this.type = oType;
}
示例10: findOrCreateObjectLiteralTerm
import org.mozilla.javascript.ast.ObjectLiteral; //导入依赖的package包/类
/**
* Find or create a term representing the type of an object literal
*/
public ITypeTerm findOrCreateObjectLiteralTerm(ObjectLiteral n) {
if (!objectLiteralTerms.containsKey(n)){
objectLiteralTerms.put(n, new ObjectLiteralTerm(n));
}
return objectLiteralTerms.get(n);
}
示例11: findOrCreateMapLiteralTerm
import org.mozilla.javascript.ast.ObjectLiteral; //导入依赖的package包/类
/**
* Find or create a term representing the type of a map literal
*/
public ITypeTerm findOrCreateMapLiteralTerm(ObjectLiteral n) {
if (!mapLiteralTerms.containsKey(n)){
mapLiteralTerms.put(n, new MapLiteralTerm(n));
}
return mapLiteralTerms.get(n);
}
示例12: isObject
import org.mozilla.javascript.ast.ObjectLiteral; //导入依赖的package包/类
/**
* Tests if an object literal is an object by checking that all
* properties are unquoted.
*/
static boolean isObject(ObjectLiteral o){
boolean result = (o.getElements().size() > 0);
for (ObjectProperty prop : o.getElements()){
AstNode left = prop.getLeft();
result = result && (left instanceof Name);
}
return result;
}
示例13: isMap
import org.mozilla.javascript.ast.ObjectLiteral; //导入依赖的package包/类
/**
* Tests if an object literal is a map by checking that
* all properties are quoted.
* In JavaScript, both double quotes and single quotes are
* supported but for now we assume double quotes are used.
*
* Empty object literals are assumed to be maps.
*/
static boolean isMap(ObjectLiteral o){
boolean result = true;
for (ObjectProperty prop : o.getElements()){
AstNode left = prop.getLeft();
result = result && (left instanceof StringLiteral);
}
return result;
}
示例14: validRHSForAssignToPrototype
import org.mozilla.javascript.ast.ObjectLiteral; //导入依赖的package包/类
/**
* is right a valid expression to assign into the prototype field of a
* constructor? currently we allow object literals, constructor calls, and
* expressions of the form B.prototype
*
* @param right
* @return
*/
private boolean validRHSForAssignToPrototype(AstNode right) {
if (right instanceof ObjectLiteral || right instanceof NewExpression) {
return true;
}
if (right instanceof PropertyGet) {
PropertyGet pg = (PropertyGet) right;
if (pg.getProperty().getIdentifier().equals("prototype")) {
return true;
}
}
return false;
}
示例15: processObjectLiteral
import org.mozilla.javascript.ast.ObjectLiteral; //导入依赖的package包/类
/**
* generate constraints for object literals.
*/
private ITypeTerm processObjectLiteral(ObjectLiteral n) {
if (ConstraintGenUtil.isObject(n)){
return processObjectLiteralForObject(n);
} else if (ConstraintGenUtil.isMap(n)){
return processObjectLiteralForMap(n);
} else {
return expError("inconsistent use of quotes in object literal: " + n.toSource(), n);
}
}