Reviewed by Ken.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 12 Aug 2004 17:21:29 +0000 (17:21 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 12 Aug 2004 17:21:29 +0000 (17:21 +0000)
commit7252253d460eb2e19a65c0808d93cda1e1b939c7
tree7f7fbfb117a0677e22096896deb46e46e86433c5
parentbd79bec5047b6866d97bc8aa2c389ad2322f9900
    Reviewed by Ken.

        - fixed 43 Mozilla JavaScript tests

        * kjs/date_object.h: Change parseDate and timeClip to take and return doubles.
        * kjs/date_object.cpp:
        (DateObjectImp::construct): Change to use a timeClip function that takes and returns a double rather
        than constructing a number object to pass to it.
        (DateObjectFuncImp::call): Change to use a parseDate function that returns a double.
        (KJS::parseDate): Change to return a double instead of creating the Number object here.
        (KJS::timeClip): Implement this as specified in the language standard.

        * kjs/error_object.cpp: (NativeErrorImp::NativeErrorImp): Set the DontDelete, ReadOnly, and DontEnum
        flags on the prototype property.

        * kjs/function.cpp:
        (KJS::FunctionImp::get): Return null rather than undefined for arguments when the function is not
        currently in scope.
        (KJS::isStrWhiteSpace): Added. Matches specification for StrWhiteSpace. Could move it to some utility
        file later.
        (KJS::parseDigit): Added. Helper function for parseInt.
        (KJS::parseInt): Added. Integer parser that puts result in a double so we're not limited to what
        strtoll can handle. Also matches standard more closely.
        (KJS::parseFloat): Added. Handles "0x" properly and passes flag to make empty string turn into NaN
        instead of 0.
        (KJS::GlobalFuncImp::call): Use the new parseInt and parseFloat.

        * kjs/function_object.cpp: (FunctionPrototypeImp::FunctionPrototypeImp): Add a length property.

        * kjs/lexer.h: Added error flag and sawError() function for detecting errors.
        * kjs/lexer.cpp:
        (Lexer::setCode): Clear error state.
        (Lexer::lex): Set error state if the lexer encounters an error

        * kjs/internal.cpp:
        (NumberImp::toString): Roll in change from KDE version to special case 0 so we handle -0 correctly.
        (Parser::parse): Use new lexer error method so those errors are treated like parser errors.

        * kjs/math_object.cpp: (MathFuncImp::call): Change min and max to treat -0 as less than +0.
        Change round to round values between -0.5 and -0 to -0 instead of +0.

        * kjs/nodes.h: Add evaluateReference function to GroupNode.
        * kjs/nodes.cpp: (GroupNode::evaluateReference): Pass references through groups (parenthesized
        expressions) properly so that expressions like "delete (x.y)" work. Before, the parentheses
        would change x.y into a value that can't be deleted as a side effect.

        * kjs/string_object.cpp: Change parameter count for indexOf and lastIndexOf from 2 to 1 to match
        the specification.

        * kjs/testkjs.cpp: Rolled in changes from KDE to add a "quit" function to the test tool and
        get rid of the fixed size limit for code.

        * kjs/ustring.cpp: (KJS::UString::substr): Added optimized case for substr(0, length) so it just
        returns the string without creating a new Rep, since I'm using substr in a place where it will
        often be passed a 0.

        * tests/mozilla/ecma/String/15.5.4.11-1.js: Fixed one wrong entry in the Unicode table I added to
        the other day that was making a couple tests fail.
        * tests/mozilla/ecma/String/15.5.4.12-1.js: Ditto.
        * tests/mozilla/ecma/String/15.5.4.12-2.js: Ditto.
        * tests/mozilla/ecma/String/15.5.4.12-3.js: Ditto.
        * tests/mozilla/ecma/String/15.5.4.12-4.js: Ditto.
        * tests/mozilla/ecma/String/15.5.4.12-5.js: Ditto.

        * kjs/string_object.lut.h: Regenerated.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@7239 268f45cc-cd09-0410-ab3c-d52691b4dbfc
23 files changed:
JavaScriptCore/ChangeLog
JavaScriptCore/kjs/date_object.cpp
JavaScriptCore/kjs/date_object.h
JavaScriptCore/kjs/error_object.cpp
JavaScriptCore/kjs/function.cpp
JavaScriptCore/kjs/function_object.cpp
JavaScriptCore/kjs/internal.cpp
JavaScriptCore/kjs/lexer.cpp
JavaScriptCore/kjs/lexer.h
JavaScriptCore/kjs/math_object.cpp
JavaScriptCore/kjs/nodes.cpp
JavaScriptCore/kjs/nodes.h
JavaScriptCore/kjs/string_object.cpp
JavaScriptCore/kjs/string_object.lut.h
JavaScriptCore/kjs/testkjs.cpp
JavaScriptCore/kjs/ustring.cpp
JavaScriptCore/tests/mozilla/ecma/String/15.5.4.11-1.js
JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-1.js
JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-2.js
JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-3.js
JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-4.js
JavaScriptCore/tests/mozilla/ecma/String/15.5.4.12-5.js
JavaScriptCore/tests/mozilla/expected.html