MCPcopy Create free account
hub / github.com/mozilla/rhino / propertyName

Method propertyName

rhino/src/main/java/org/mozilla/javascript/Parser.java:3446–3507  ·  view source on GitHub ↗

Check if :: follows name in which case it becomes a qualified name. @param atPos a natural number if we just read an '@' token, else -1 @param memberTypeFlags flags tracking whether we're a '.' or '..' child @return an XmlRef node if it's an attribute access, a child of a '..' operator, or the name

(int atPos, int memberTypeFlags)

Source from the content-addressed store, hash-verified

3444 * malformed XML expressions. (For now - might change to return a partial XmlRef.)
3445 */
3446 private AstNode propertyName(int atPos, int memberTypeFlags) throws IOException {
3447 int pos = atPos != -1 ? atPos : ts.tokenBeg, lineno = lineNumber(), column = columnNumber();
3448 int colonPos = -1;
3449 Name name = createNameNode(true, currentToken);
3450 Name ns = null;
3451
3452 if (matchToken(Token.COLONCOLON, true)) {
3453 ns = name;
3454 colonPos = ts.tokenBeg;
3455
3456 int nt = nextToken();
3457 switch (nt) {
3458 // handles name::name
3459 case Token.NAME:
3460 name = createNameNode();
3461 break;
3462 case Token.RESERVED:
3463 {
3464 String realName = ts.getString();
3465 saveNameTokenData(ts.tokenBeg, realName, lineNumber(), columnNumber());
3466 name = createNameNode(false, -1);
3467 break;
3468 }
3469 case Token.MUL:
3470 saveNameTokenData(ts.tokenBeg, "*", lineNumber(), columnNumber());
3471 name = createNameNode(false, -1);
3472 break;
3473
3474 // handles name::[expr] or *::[expr]
3475 case Token.LB:
3476 return xmlElemRef(atPos, ns, colonPos);
3477
3478 default:
3479 {
3480 if (compilerEnv.isReservedKeywordAsIdentifier()) {
3481 // allow keywords as property names, e.g. ({if: 1})
3482 String realName = Token.keywordToName(nt);
3483 if (name != null) {
3484 saveNameTokenData(
3485 ts.tokenBeg, realName, lineNumber(), columnNumber());
3486 name = createNameNode(false, -1);
3487 break;
3488 }
3489 }
3490 }
3491 reportError("msg.no.name.after.coloncolon");
3492 return makeErrorNode();
3493 }
3494 }
3495
3496 if (ns == null && memberTypeFlags == 0 && atPos == -1) {
3497 return name;
3498 }
3499
3500 XmlPropRef ref = new XmlPropRef(pos, getNodeEnd(name) - pos);
3501 ref.setAtPos(atPos);
3502 ref.setNamespace(ns);
3503 ref.setColonPos(colonPos);

Callers 3

propertyAccessMethod · 0.95
attributeAccessMethod · 0.95
nameMethod · 0.95

Calls 15

lineNumberMethod · 0.95
columnNumberMethod · 0.95
createNameNodeMethod · 0.95
matchTokenMethod · 0.95
nextTokenMethod · 0.95
saveNameTokenDataMethod · 0.95
xmlElemRefMethod · 0.95
keywordToNameMethod · 0.95
reportErrorMethod · 0.95
makeErrorNodeMethod · 0.95
getNodeEndMethod · 0.95
setPropNameMethod · 0.95

Tested by

no test coverage detected