| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
Consistent method of calling test constraints, and (try to) move constraint
setup to the top of the test file
|
|
|
|
|
|
|
|
|
| |
* tests/execute.test: due to addition of bignums.
* tests/expr-old.test:
* tests/expr.test:
* tests/parseExpr.test:
* tests/platform.test:
* tests/string.test:
|
|
|
|
|
|
|
| |
match changes in code.
* tests/expr-old.test (expr-32.52): Use int(.) to restrict
result of left shift to the C long range.
|
| |
|
|
|
|
|
|
| |
[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.
|
| |
|
|
|
|
|
|
|
| |
* generic/tclBasic.c: Simplified implementation of Tcl_ExprString.
* tests/expr-old.test:
* generic/tclDecls.h: `make gentstubs`
|
| |
|
| |
|
| |
|
|
|
|
| |
Hemang Lavana.
|
| |
|
|
|
|
| |
necessary.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* doc/Concat.3: all remaining public interfaces of Tcl.
* doc/CrtCommand.3: Notably, the parser no longer writes on
* doc/CrtSlave.3: the string it is parsing, so it is no
* doc/CrtTrace.3: longer necessary for Tcl_Eval() to be
* doc/Eval.3: given a writable string. Also, the
* doc/ExprLong.3: refactoring of the Tcl_*Var* routines
* doc/LinkVar.3: by Miguel Sofer is included, so that the
* doc/ParseCmd.3: "part1" argument for them no longer needs
* doc/SetVar.3: to be writable either.
* doc/TraceVar.3:
* doc/UpVar.3: Compatibility support has been enhanced so
* generic/tcl.decls that a #define of USE_NON_CONST will remove
* generic/tcl.h all possible source incompatibilities with
* generic/tclBasic.c the 8.3 version of the header file(s).
* generic/tclCmdMZ.c The new #define of USE_COMPAT_CONST now does
* generic/tclCompCmds.c what USE_NON_CONST used to do -- disable
* generic/tclCompExpr.c only those new CONST's that introduce
* generic/tclCompile.c irreconcilable incompatibilities.
* generic/tclCompile.h
* generic/tclDecls.h Several bugs are also fixed by this patch.
* generic/tclEnv.c [Bugs 584051,580433] [Patches 585105,582429]
* generic/tclEvent.c
* generic/tclInt.decls
* generic/tclInt.h
* generic/tclIntDecls.h
* generic/tclInterp.c
* generic/tclLink.c
* generic/tclObj.c
* generic/tclParse.c
* generic/tclParseExpr.c
* generic/tclProc.c
* generic/tclTest.c
* generic/tclUtf.c
* generic/tclUtil.c
* generic/tclVar.c
* mac/tclMacTest.c
* tests/expr-old.test
* tests/parseExpr.test
* unix/tclUnixTest.c
* unix/tclXtTest.c
* win/tclWinTest.c
|
|
|
|
|
| |
* tests/expr-old.test: fix for erroneous error messages in [expr],
[Bug 587140] reported by Martin Lemburg.
|
|
|
|
| |
"floating-point value" in [expr] error messages.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclExecute.c:
* tests/expr-old.test: Re-wrote Tcl's [expr rand()] and
[expr srand($seed)] implementations, fixing a range error
on some 64-bit platforms. Added tests that detect the bug.
The rewrite changes the seed -> sequence map on 64-bit
platforms, only for seed >= 2^31, a slight incompatibility.
[Bug 121072, Patch 102781]
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tests/expr.test:
* tests/expr-old.test: added tests for 'eq' and 'ne'
* generic/tclExecute.c:
* generic/tclCompile.h: added INST_STREQ and INST_STRNEQ opcodes
that do strict string comparisons.
* generic/tclCompExpr.c: added 'eq' and 'ne' string comparison
operators.
* generic/tclParseExpr.c (GetLexeme): added 'eq' and 'ne' expr
parse terms (string (in)equality check).
|
|
|
|
| |
::tcltest" to "namespace import -force ::tcltest" [Bug: 3948].
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tests/all.tcl: ensured that ::tcltest::testsDirectory would be
set to an absolute path
* tests/expr-old.test:
* tests/parseExpr.test:
* tests/string.test:
* generic/tclGet.c:
* generic/tclInt.h:
* generic/tclObj.c:
* generic/tclParseExpr.c:
* generic/tclUtil.c:
* generic/tclExecute.c: added TclCheckBadOctal routine to enhance
error message checking for when users use invalid octal numbers
(like 08), as well as replumbed the Expr*Funcs with a new
VerifyExprObjType to simplify type handling.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|