VirtualBox

Changeset 98383 in vbox for trunk


Ignore:
Timestamp:
Feb 1, 2023 1:00:13 PM (2 years ago)
Author:
vboxsync
Message:

scm: More on the kmk makefile cleanup. bugref:10348

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bldprogs/scmrw-kmk.cpp

    r98380 r98383  
    600600    size_t  const      cchLine   = pParser->cchLine;
    601601    uint32_t const     cchIndent = pParser->iActualDepth
    602                                  - (fElse && pParser->iDepth > 0 && !pParser->aDepth[pParser->iDepth].fIgnoreNesting);
     602                                 - (fElse && pParser->iActualDepth > 0 && !pParser->aDepth[pParser->iDepth - 1].fIgnoreNesting);
    603603
    604604    /*
     
    747747    size_t          cchLine   = pParser->cchLine;
    748748    uint32_t const  cchIndent = pParser->iActualDepth
    749                               - (fElse && pParser->iDepth > 0 && !pParser->aDepth[pParser->iDepth].fIgnoreNesting);
     749                              - (fElse && pParser->iActualDepth > 0 && !pParser->aDepth[pParser->iDepth - 1].fIgnoreNesting);
    750750
    751751    /*
     
    10951095        pParser->iActualDepth -= 1;
    10961096    }
    1097     uint32_t const cchIndent = pParser->iActualDepth;
    10981097    ScmVerbose(pParser->pState, 5, "%u: debug: unnesting %u/%u (endif)\n",
    10991098               ScmStreamTellLine(pParser->pIn), iDepth, pParser->iActualDepth);
     1099    uint32_t const cchIndent = pParser->iActualDepth;
    11001100
    11011101    /*
     
    11801180static bool scmKmkHandleDefine(KMKPARSER *pParser, size_t offToken)
    11811181{
     1182    scmKmkHandleSimple(pParser, offToken);
     1183
    11821184    /* Hack Alert! Start out parsing the define in recipe mode.
    11831185
     
    11851187       used. However, we ASSUME they are either makefile code snippets or
    11861188       recipe templates.  */
     1189    scmKmkPushNesting(pParser, kKmkToken_define);
    11871190    scmKmkSetInRecipe(pParser, true);
    1188 
    1189     return scmKmkHandleSimple(pParser, offToken);
     1191    return false;
    11901192}
    11911193
     
    11951197    /* Leaving a define resets the recipt mode. */
    11961198    scmKmkSetInRecipe(pParser, false);
     1199
     1200    /*
     1201     * Pop a nesting.
     1202     */
     1203    if (pParser->iDepth < 1)
     1204        return scmKmkGiveUp(pParser, "Lone 'endef'");
     1205    uint32_t iDepth = pParser->iDepth - 1;
     1206    if (pParser->aDepth[iDepth].enmToken != kKmkToken_define)
     1207        return scmKmkGiveUp(pParser, "Unpexected 'endef', expected 'endif' for line %u", pParser->aDepth[iDepth].iLine);
     1208    pParser->iDepth = iDepth;
     1209    if (!pParser->aDepth[iDepth].fIgnoreNesting)
     1210    {
     1211        AssertStmt(pParser->iActualDepth > 0, pParser->iActualDepth++);
     1212        pParser->iActualDepth -= 1;
     1213    }
     1214    ScmVerbose(pParser->pState, 5, "%u: debug: unnesting %u/%u (endef)\n",
     1215               ScmStreamTellLine(pParser->pIn), iDepth, pParser->iActualDepth);
    11971216
    11981217    return scmKmkHandleSimple(pParser, offToken);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette