Changeset 52981 in webkit


Ignore:
Timestamp:
Jan 8, 2010 3:17:27 AM (14 years ago)
Author:
eric@webkit.org
Message:

2010-01-08 Kent Hansen <kent.hansen@nokia.com>

Reviewed by Darin Adler.

RegExp.prototype.toString returns "" for empty regular expressions
https://bugs.webkit.org/show_bug.cgi?id=33319

"" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA.

  • runtime/RegExpPrototype.cpp: (JSC::regExpProtoFuncToString):

2010-01-08 Kent Hansen <kent.hansen@nokia.com>

Reviewed by Darin Adler.

RegExp.prototype.toString returns "" for empty regular expressions
https://bugs.webkit.org/show_bug.cgi?id=33319

Add new test cases and adapt existing ones.

  • fast/js/kde/RegExp-expected.txt:
  • fast/js/kde/script-tests/RegExp.js:
  • fast/js/script-tests/regexp-compile.js:
  • fast/regex/non-pattern-characters-expected.txt:
Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r52978 r52981  
     12010-01-08  Kent Hansen  <kent.hansen@nokia.com>
     2
     3        Reviewed by Darin Adler.
     4
     5        RegExp.prototype.toString returns "//" for empty regular expressions
     6        https://bugs.webkit.org/show_bug.cgi?id=33319
     7
     8        "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA.
     9
     10        * runtime/RegExpPrototype.cpp:
     11        (JSC::regExpProtoFuncToString):
     12
    1132010-01-08  Norbert Leser  <norbert.leser@nokia.com>
    214
  • trunk/JavaScriptCore/runtime/RegExpPrototype.cpp

    r52028 r52981  
    115115    if (asRegExpObject(thisValue)->get(exec, exec->propertyNames().multiline).toBoolean(exec))
    116116        postfix[index] = 'm';
    117    
    118     return jsNontrivialString(exec, makeString("/", asRegExpObject(thisValue)->get(exec, exec->propertyNames().source).toString(exec), postfix));
     117    UString source = asRegExpObject(thisValue)->get(exec, exec->propertyNames().source).toString(exec);
     118    return jsNontrivialString(exec, makeString("/", source.size() ? source : UString("(?:)"), postfix));
    119119}
    120120
  • trunk/LayoutTests/ChangeLog

    r52980 r52981  
     12010-01-08  Kent Hansen  <kent.hansen@nokia.com>
     2
     3        Reviewed by Darin Adler.
     4
     5        RegExp.prototype.toString returns "//" for empty regular expressions
     6        https://bugs.webkit.org/show_bug.cgi?id=33319
     7
     8        Add new test cases and adapt existing ones.
     9
     10        * fast/js/kde/RegExp-expected.txt:
     11        * fast/js/kde/script-tests/RegExp.js:
     12        * fast/js/script-tests/regexp-compile.js:
     13        * fast/regex/non-pattern-characters-expected.txt:
     14
    1152010-01-08  Eric Seidel  <eric@webkit.org>
    216
  • trunk/LayoutTests/fast/js/kde/RegExp-expected.txt

    r20149 r52981  
    9393FAIL Object.prototype.toString.apply(RegExp.prototype) should be [object RegExp]. Was [object RegExpPrototype].
    9494PASS typeof RegExp.prototype.toString() is 'string'
     95PASS new RegExp().toString() is '/(?:)/'
     96PASS (new RegExp('(?:)')).source is '(?:)'
     97PASS /(?:)/.toString() is '/(?:)/'
     98PASS /(?:)/.source is '(?:)'
    9599Done.
    96100PASS successfullyParsed is true
  • trunk/LayoutTests/fast/js/kde/script-tests/RegExp.js

    r48651 r52981  
    149149shouldBe("typeof RegExp.prototype.toString()", "'string'");
    150150
     151// Empty regular expressions have string representation /(?:)/
     152shouldBe("new RegExp().toString()", "'/(?:)/'");
     153shouldBe("(new RegExp('(?:)')).source", "'(?:)'");
     154shouldBe("/(?:)/.toString()", "'/(?:)/'");
     155shouldBe("/(?:)/.source", "'(?:)'");
     156
    151157debug("Done.");
    152158successfullyParsed = true
  • trunk/LayoutTests/fast/js/regexp-compile-expected.txt

    r27571 r52981  
    2020PASS re.toString() is '/undefined/'
    2121PASS re.toString() is '/null/'
    22 PASS re.toString() is '//'
     22PASS re.toString() is '/(?:)/'
    2323PASS re.toString() is '/z/'
    2424PASS re.lastIndex is 0
  • trunk/LayoutTests/fast/js/script-tests/regexp-compile.js

    r48651 r52981  
    3939
    4040re.compile();
    41 shouldBe("re.toString()", "'//'"); // /(?:)/ in Firefox
     41shouldBe("re.toString()", "'/(?:)/'");
    4242
    4343re.compile("z", undefined);
  • trunk/LayoutTests/fast/regex/non-pattern-characters-expected.txt

    r39119 r52981  
    157157PASS regexp.lastIndex is 2
    158158
    159 Testing regexp: //gm
     159Testing regexp: /(?:)/gm
    160160PASS regexp.test('') is true
    161161PASS regexp.lastIndex is 0
Note: See TracChangeset for help on using the changeset viewer.