Changeset 181183 in webkit for trunk/Source/JavaScriptCore/parser/Parser.cpp
- Timestamp:
- Mar 6, 2015, 2:31:28 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/parser/Parser.cpp
r181179 r181183 1283 1283 case FunctionMode: 1284 1284 return "function"; 1285 #if ENABLE(ES6_CLASS_SYNTAX)1286 1285 case MethodMode: 1287 1286 return "method"; 1288 #endif1289 1287 } 1290 1288 RELEASE_ASSERT_NOT_REACHED(); … … 1937 1935 } 1938 1936 1937 if (match(OPENPAREN)) { 1938 auto method = parsePropertyMethod(context, ident); 1939 propagateError(); 1940 return context.createProperty(ident, method, PropertyNode::Constant, PropertyNode::KnownDirect, complete); 1941 } 1942 1939 1943 failIfFalse(wasIdent, "Expected an identifier as property name"); 1940 1944 … … 1960 1964 double propertyName = m_token.m_data.doubleValue; 1961 1965 next(); 1966 1967 if (match(OPENPAREN)) { 1968 const Identifier& ident = m_parserArena.identifierArena().makeNumericIdentifier(const_cast<VM*>(m_vm), propertyName); 1969 auto method = parsePropertyMethod(context, &ident); 1970 propagateError(); 1971 return context.createProperty(&ident, method, PropertyNode::Constant, PropertyNode::Unknown, complete); 1972 } 1973 1962 1974 consumeOrFail(COLON, "Expected ':' after property name"); 1963 1975 TreeExpression node = parseAssignmentExpression(context); … … 1970 1982 auto propertyName = parseExpression(context); 1971 1983 failIfFalse(propertyName, "Cannot parse computed property name"); 1972 1973 1984 handleProductionOrFail(CLOSEBRACKET, "]", "end", "computed property name"); 1985 1986 if (match(OPENPAREN)) { 1987 auto method = parsePropertyMethod(context, &m_vm->propertyNames->nullIdentifier); 1988 propagateError(); 1989 return context.createProperty(propertyName, method, PropertyNode::Constant, PropertyNode::KnownDirect, complete); 1990 } 1991 1974 1992 consumeOrFail(COLON, "Expected ':' after property name"); 1975 1993 TreeExpression node = parseAssignmentExpression(context); … … 1982 2000 goto namedProperty; 1983 2001 } 2002 } 2003 2004 template <typename LexerType> 2005 template <class TreeBuilder> TreeExpression Parser<LexerType>::parsePropertyMethod(TreeBuilder& context, const Identifier* methodName) 2006 { 2007 JSTokenLocation methodLocation(tokenLocation()); 2008 unsigned methodStart = tokenStart(); 2009 ParserFunctionInfo<TreeBuilder> methodInfo; 2010 failIfFalse((parseFunctionInfo(context, FunctionNoRequirements, MethodMode, false, methodInfo)), "Cannot parse this method"); 2011 methodInfo.name = methodName; 2012 return context.createFunctionExpr(methodLocation, methodInfo, methodStart); 1984 2013 } 1985 2014
Note:
See TracChangeset
for help on using the changeset viewer.