| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
* tests/expr.test (expr-23.48-53) integer exponentiation
that results in 32- and 64-bit integer results, avoiding calls to
wide integer exponentiation routines in this common case.
[Bug 1767293]
|
|
|
|
| |
* tests/expr.test: to *SHIFT operations. [Bug 1770224].
|
| |
|
| |
|
|
|
|
|
| |
* generic/tclParseExpr.c: Exponentiation operator is now
* tests/expr.test: right associative. [Patch 1556802]
|
|
|
|
|
| |
* tests/expr.test: the sign of bignums when applying Tcl's
division rules. Thanks to Peter Spjuth. [Bug 1585704]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
global variables ::errorInfo, ::errorCode, ::env and
::tcl_platform: many were relying on the alternative lookup in the
global namespace, that feature is tested specifically in namespace
and variable tests.
The modified testfiles are: apply.test, basic.test, case.test,
cmdIL.test, cmdMZ.test, compExpr-old.test, error.test, eval.test,
event.test, expr.test, fileSystem.test, for.test, http.test,
if.test, incr-old.test, incr.test, interp.test, io.test,
ioCmd.test, load.test, misc.test, namespace.test, parse.test,
parseOld.test, pkg.test, proc-old.test, set.test, switch.test,
tcltest.test, thread.test, var.test, while-old.test, while.test.
|
|
|
|
|
|
|
|
| |
* tests/expr.test: calculation done to determine whether a
shift in the (long int) type is possible. The calculation had
literal value "1" where it needed a value "1L" to compute the
correct result. Error detected via testing with the
math::bigfloat package [Bug 1567222]
|
|
|
|
|
|
|
| |
* tests/expr.test: was completely broken. Falling back on use of
bignums for all non-trivial ** calculations until
native-type-constrained special cases can be done carefully and
correctly. [Bug 1561260].
|
|
|
|
| |
* tests/expr.test: $x**1 as $x**3. [Bug 1555371]
|
|
|
|
|
|
| |
* tests/expr.test: [Bug 1381715] are all new in Tcl 8.5, so
there's really no issue of compatibility with Tcl 8.4 result to
deal with. Fixed by updating tests to expect 8.5 results.
|
|
|
|
|
|
|
|
|
|
|
| |
* tests/compExpr.test: with the new expr parser.
* tests/compile.test:
* tests/expr-old.test:
* tests/expr.test:
* tests/for.test:
* tests/if.test:
* tests/parseExpr.test:
* tests/while.test:
|
|
|
|
|
|
|
|
|
|
|
| |
* tests/compExpr.test: that depend on the exact format of the error
* tests/compile.test: messages of the pre-2006-07-05 expression
* tests/expr-old.test: parser. The constraint is on by default (i.e.
* tests/expr.test: those test still fail), but it can be turned
* tests/for.test: off by passing '-constraints newExprParser'
* tests/if.test: to tcltest, which will skip the 196 failing
* tests/parseExpr.test: tests in the testsuite that are caused by
* tests/while.test: the new expression parser error messages.
|
|
|
|
|
| |
* tests/expr.test: INST_EXPON that caused [expr 2**64]
to return 0 instead of the same value as [expr 1<<64].
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that builds a parse tree instead of operating with deep recursion.
This corrects reports of stack-blowing crashes parsing long
expressions [Bug 906201] and replaces a fundamentally O(N^2)
algorithm with an O(N) one [RFE 903765]. The new parser is better
able to generate error messages that clearly report both the nature
and context of the syntax error [Bugs 1029267, 1381715]. For now,
the code for the old parser is still present and can be activated
with a "#define OLD_EXPR_PARSER 1". This is for the sake of a clean
implementation patch, and for ease of benchmarking. The new parser
is non-recursive, so much lighter in stack consumption, but it
does use more heap, so there may be cases where parsing of long
expressions that succeeded with the old parser will lead to out
of memory panics with the new one. There are still more improvements
possible on that point, though significant progress may require
changes to the Tcl_Token specifications documented for the public
Tcl_Parse*() routines.
***POTENTIAL INCOMPATIBILITY*** for any callers that rely on the
exact (usually terrible) error messages generated by the old parser.
This includes a large number of tests in the test suite.
* generic/tclInt.h: Replaced TclParseWhiteSpace() with
* generic/tclParse.c: TclParseAllWhiteSpace() which is what
* generic/tclParseExpr.c: all the callers really needed.
Breaking whitespace runs at newlines is useful only to the command
parsing function, and it can call the file scoped routine
ParseWhiteSpace() to do that.
* tests/expr-old.test: Removed knownBug constraints that masked
* tests/expr.test: failures due to revised error messages.
* tests/parseExpr.test:
|
|
|
|
|
|
|
|
|
|
| |
* tests/compExpr.test: to post-TIP-232 world.
* tests/expr-old.test:
* tests/expr.test:
* tests/info.test:
* tests/indexObj.test: Corrected other test errors revealed by
* tests/upvar.test: testing outside the tcltest application.
|
|
|
|
| |
overflow to use mp_int calculations.
|
|
|
|
|
| |
calculations in native types as much as possible, moving to mp_ints
only when necessary.
|
| |
|
|
|
|
|
|
|
|
|
| |
* tests/execute.test: due to addition of bignums.
* tests/expr-old.test:
* tests/expr.test:
* tests/parseExpr.test:
* tests/platform.test:
* tests/string.test:
|
| |
|
|
|
|
| |
shortcoming of Patch 1340260.
|
| |
|
| |
|
|
|
|
|
|
| |
[kennykb-numerics-branch] Resynchronized with the HEAD; at this
checkpoint [-rkennykb-numerics-branch-20051008], the HEAD and
kennykb-numerics-branch contain identical code.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tests/error.test: tests into tests with constraints that
* tests/expr-old.test: describe the limits of their
* tests/expr.test: portability. Also more consolidation
* tests/fileName.test: of constraint synonyms.
* tests/format.test: wideis64bit, 64bitInts => wideIs64bit
* tests/get.test: wideIntegerUnparsed => wideIs32bit
* tests/load.test: wideIntExpressions => wideBiggerThanInt
* tests/obj.test:
* tests/parseExpr.test: Dropped "roundOffBug" constraint that
* tests/string.test: protected from buggy sprintf.
|
|
|
|
|
|
|
|
|
| |
* tests/fileName.test: single definitions and (more precise) names:
* tests/get.test: longis32bit, 32bit, !intsAre64bit => longIs32bit * tests/listObj.test: empty => emptyTest; winOnly => win
* tests/obj.test: intsAre64bit => longIs64bit
Also updated some "nonPortable" tests to use constraints that mark
precisely what about them isn't portable, so the tests can run where
they work.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reimplement long and wide type integer division
and modulus operations so that the smallest
and largest integer values are handled properly.
The divide operation is more efficient since
it no longer does a modulus or negation and
only checks for a remainder when the quotient
will be a negative number. The modulus operation
is now a bit more complex because of a number of
special cases dealing with the smallest and
largest integers.
* tests/expr.test: Add test cases for division
and modulus operations on the smallest and
largest integer values for 32 and 64 bit types.
[Patch 1230205]
|
|
|
|
|
|
|
|
|
|
|
| |
When parsing an integer operand for a unary
minus expression operator, check for a wide
integer that is actually LONG_MIN. If found,
convert it back to a long int type.
* tests/expr.test: Add constraint for 32bit
long int type and 64bit wide int type. Add
tests that parse the smallest/largest long int
and wide int values.
|
|
|
|
|
|
|
| |
* doc/mathfunc.n: New built-in math function bool().
* generic/tclBasic.c:
* tests/expr.test:
* tests/info.test:
|
| |
|
|
|
|
| |
'i**0' for i>0 [Bug 1198892]
|
| |
|
| |
|
|
|
|
| |
parser. [Bug 884830]
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
necessary.
|
| |
|