Changeset 181183 in webkit
- Timestamp:
- Mar 6, 2015 2:31:28 PM (9 years ago)
- Location:
- trunk
- Files:
-
- 6 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r181179 r181183 1 2015-03-06 Joseph Pecoraro <pecoraro@apple.com> 2 3 ES6: Object Literal Extensions - Methods 4 https://bugs.webkit.org/show_bug.cgi?id=142390 5 6 Reviewed by Geoffrey Garen. 7 8 * js/object-literal-computed-methods-expected.txt: Added. 9 * js/object-literal-computed-methods.html: Added. 10 * js/object-literal-methods-expected.txt: Added. 11 * js/object-literal-methods.html: Added. 12 * js/script-tests/object-literal-computed-methods.js: Added. 13 * js/script-tests/object-literal-methods.js: Added. 14 1 15 2015-03-06 Joseph Pecoraro <pecoraro@apple.com> 2 16 -
trunk/Source/JavaScriptCore/ChangeLog
r181179 r181183 1 2015-03-06 Joseph Pecoraro <pecoraro@apple.com> 2 3 ES6: Object Literal Extensions - Methods 4 https://bugs.webkit.org/show_bug.cgi?id=142390 5 6 Reviewed by Geoffrey Garen. 7 8 Support method syntax in object literals. 9 10 * parser/Parser.h: 11 * parser/Parser.cpp: 12 (JSC::stringForFunctionMode): 13 (JSC::Parser<LexerType>::parseProperty): 14 Methods are allowed for identifier, string, and numeric names, 15 and computed property names. 16 17 (JSC::Parser<LexerType>::parsePropertyMethod): 18 Helper for parsing a property method. 19 1 20 2015-03-05 Joseph Pecoraro <pecoraro@apple.com> 2 21 -
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 -
trunk/Source/JavaScriptCore/parser/Parser.h
r180637 r181183 86 86 GetterMode, 87 87 SetterMode, 88 #if ENABLE(ES6_CLASS_SYNTAX) 89 MethodMode 90 #endif 88 MethodMode, 91 89 }; 92 90 enum DeconstructionKind { … … 740 738 template <class TreeBuilder> ALWAYS_INLINE TreeArguments parseArguments(TreeBuilder&, SpreadMode); 741 739 template <class TreeBuilder> TreeProperty parseProperty(TreeBuilder&, bool strict); 740 template <class TreeBuilder> TreeExpression parsePropertyMethod(TreeBuilder& context, const Identifier* methodName); 742 741 template <class TreeBuilder> TreeProperty parseGetterSetter(TreeBuilder&, bool strict, PropertyNode::Type, unsigned getterOrSetterStartOffset); 743 742 template <class TreeBuilder> ALWAYS_INLINE TreeFunctionBody parseFunctionBody(TreeBuilder&);
Note: See TracChangeset
for help on using the changeset viewer.