Tcl Source Code

Check-in [81a8754c40]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:mark some more commands for future expansion consideration
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | compile-lpop-ledit
Files: files | file ages | folders
SHA3-256: 81a8754c40855c3d90a0ba714bd3defd3dd008cafb93aa84638a0852ac9f3413
User & Date: dkf 2025-06-26 10:32:07.859
Context
2025-06-26
10:32
mark some more commands for future expansion consideration Leaf check-in: 81a8754c40 user: dkf tags: compile-lpop-ledit
07:56
merge trunk check-in: 01861c022a user: dkf tags: compile-lpop-ledit
Changes
Unified Diff Ignore Whitespace Patch
Changes to generic/tclCompCmdsGR.c.
1395
1396
1397
1398
1399
1400
1401

1402
1403
1404
1405
1406
1407
1408
				 * command. */
    TCL_UNUSED(Command *),
    CompileEnv *envPtr)		/* Holds the resulting instructions. */
{
    DefineLineInformation;	/* TIP #280 */
    Tcl_Token *listToken, *indexToken, *tokenPtr;
    Tcl_Size i, numWords = parsePtr->numWords;


    if (numWords < 3 || numWords > UINT_MAX) {
	return TCL_ERROR;
    }

    /* Push list, insertion index onto the stack */
    listToken = TokenAfter(parsePtr->tokenPtr);







>







1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
				 * command. */
    TCL_UNUSED(Command *),
    CompileEnv *envPtr)		/* Holds the resulting instructions. */
{
    DefineLineInformation;	/* TIP #280 */
    Tcl_Token *listToken, *indexToken, *tokenPtr;
    Tcl_Size i, numWords = parsePtr->numWords;
    /* TODO: Consider support for compiling expanded args. */

    if (numWords < 3 || numWords > UINT_MAX) {
	return TCL_ERROR;
    }

    /* Push list, insertion index onto the stack */
    listToken = TokenAfter(parsePtr->tokenPtr);
1447
1448
1449
1450
1451
1452
1453

1454
1455
1456
1457
1458
1459
1460
				 * command. */
    TCL_UNUSED(Command *),
    CompileEnv *envPtr)		/* Holds the resulting instructions. */
{
    DefineLineInformation;	/* TIP #280 */
    Tcl_Token *listToken, *firstToken, *lastToken, *tokenPtr;
    Tcl_Size i, numWords = parsePtr->numWords;


    if (numWords < 4 || numWords > UINT_MAX) {
	return TCL_ERROR;
    }

    /* Push list, first, last onto the stack */
    listToken = TokenAfter(parsePtr->tokenPtr);







>







1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
				 * command. */
    TCL_UNUSED(Command *),
    CompileEnv *envPtr)		/* Holds the resulting instructions. */
{
    DefineLineInformation;	/* TIP #280 */
    Tcl_Token *listToken, *firstToken, *lastToken, *tokenPtr;
    Tcl_Size i, numWords = parsePtr->numWords;
    /* TODO: Consider support for compiling expanded args. */

    if (numWords < 4 || numWords > UINT_MAX) {
	return TCL_ERROR;
    }

    /* Push list, first, last onto the stack */
    listToken = TokenAfter(parsePtr->tokenPtr);
1497
1498
1499
1500
1501
1502
1503

1504
1505
1506
1507
1508
1509
1510
    Tcl_Parse *parsePtr,	/* Points to a parse structure for the
				 * command. */
    TCL_UNUSED(Command *),
    CompileEnv *envPtr)		/* Holds the resulting instructions. */
{
    DefineLineInformation;	/* TIP #280 */
    Tcl_Size numWords = parsePtr->numWords, i;

    if (numWords < 4) {
	return TCL_ERROR;
    }
    Tcl_Token *varTokenPtr = TokenAfter(parsePtr->tokenPtr);

    /*
     * Parse/push the variable name. Pushes 0, 1 or 2 words.







>







1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
    Tcl_Parse *parsePtr,	/* Points to a parse structure for the
				 * command. */
    TCL_UNUSED(Command *),
    CompileEnv *envPtr)		/* Holds the resulting instructions. */
{
    DefineLineInformation;	/* TIP #280 */
    Tcl_Size numWords = parsePtr->numWords, i;
    /* TODO: Consider support for compiling expanded args. */
    if (numWords < 4) {
	return TCL_ERROR;
    }
    Tcl_Token *varTokenPtr = TokenAfter(parsePtr->tokenPtr);

    /*
     * Parse/push the variable name. Pushes 0, 1 or 2 words.
1615
1616
1617
1618
1619
1620
1621

1622
1623
1624
1625
1626
1627
1628
    Tcl_Parse *parsePtr,	/* Points to a parse structure for the
				 * command. */
    TCL_UNUSED(Command *),
    CompileEnv *envPtr)		/* Holds the resulting instructions. */
{
    DefineLineInformation;	/* TIP #280 */
    Tcl_Size numWords = parsePtr->numWords;


    // TODO: Figure out all the stack cases here to allow full variable access
    // TODO: Find way to handle multiple indices
    // (extra opcode for TclLsetFlat with NULL value?)

    if (numWords < 2 || numWords > 3) {
	return TCL_ERROR;







>







1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
    Tcl_Parse *parsePtr,	/* Points to a parse structure for the
				 * command. */
    TCL_UNUSED(Command *),
    CompileEnv *envPtr)		/* Holds the resulting instructions. */
{
    DefineLineInformation;	/* TIP #280 */
    Tcl_Size numWords = parsePtr->numWords;
    /* TODO: Consider support for compiling expanded args. */

    // TODO: Figure out all the stack cases here to allow full variable access
    // TODO: Find way to handle multiple indices
    // (extra opcode for TclLsetFlat with NULL value?)

    if (numWords < 2 || numWords > 3) {
	return TCL_ERROR;