|
1636 | 1636 | let genClassValueLineNo = -1
|
1637 | 1637 | let insideReaderComment = false
|
1638 | 1638 | let idOfLastNodeInsideReaderComment = -1
|
1639 |
| - let requireRenameIdx = -1 |
1640 |
| - let requireRenameParenNestingDepth = -1 |
| 1639 | + let renameIdx = -1 |
| 1640 | + let renameParenNestingDepth = -1 |
1641 | 1641 | let skipNodesUntilWeReachThisId = -1
|
1642 | 1642 | let sectionToAttachEolCommentsTo = null
|
1643 | 1643 | let nextTokenIsRequireDefaultSymbol = false
|
|
1702 | 1702 | insideReaderConditional = true
|
1703 | 1703 | currentReaderConditionalPlatform = null
|
1704 | 1704 | readerConditionalParenNestingDepth = parenNestingDepth
|
1705 |
| - } else if (insideRequireForm) { |
| 1705 | + } else if (insideRequireForm && requireListParenNestingDepth === -1) { |
1706 | 1706 | insideRequireList = true
|
1707 | 1707 | requireListParenNestingDepth = parenNestingDepth
|
1708 | 1708 | } else if (insideImportForm && parenNestingDepth > importNodeParenNestingDepth) {
|
|
1712 | 1712 | parenNestingDepth = dec(parenNestingDepth)
|
1713 | 1713 | stackPop(parenStack)
|
1714 | 1714 |
|
1715 |
| - // TODO: should these be "else if"s or just "ifs" ? |
1716 |
| - // I think maybe they should be "if"s |
| 1715 | + // We can assume there is only one ns form per file and exit the main |
| 1716 | + // loop once we have finished parsing it. |
| 1717 | + if (insideNsForm && parenNestingDepth === 0) { |
| 1718 | + insideNsForm = false |
| 1719 | + nsFormEndsLineIdx = lineNo |
| 1720 | + } |
| 1721 | + |
1717 | 1722 | if (insideImportPackageList) {
|
1718 | 1723 | insideImportPackageList = false
|
1719 | 1724 | importPackageListFirstToken = null
|
1720 |
| - } else if (insideRequireForm && parenNestingDepth < requireFormParenNestingDepth) { |
| 1725 | + } |
| 1726 | + if (insideRequireForm && parenNestingDepth < requireFormParenNestingDepth) { |
1721 | 1727 | insideRequireForm = false
|
1722 |
| - } else if (insideRequireList && parenNestingDepth < requireListParenNestingDepth) { |
1723 |
| - insideRequireList = false |
1724 |
| - requireListParenNestingDepth = -1 |
1725 |
| - requireRenameIdx = -1 |
1726 |
| - } else if (insideReferClojureForm && parenNestingDepth < referClojureParenNestingDepth) { |
| 1728 | + requireFormParenNestingDepth = -1 |
| 1729 | + } |
| 1730 | + if (insideReferClojureForm && parenNestingDepth < referClojureParenNestingDepth) { |
1727 | 1731 | insideReferClojureForm = false
|
1728 | 1732 | referClojureNodeIdx = -1
|
1729 |
| - } else if (insideNsForm && parenNestingDepth === 0) { |
1730 |
| - // We can assume there is only one ns form per file and exit the main |
1731 |
| - // loop once we have finished parsing it. |
1732 |
| - insideNsForm = false |
1733 |
| - nsFormEndsLineIdx = lineNo |
1734 | 1733 | }
|
1735 | 1734 |
|
1736 | 1735 | if (insideReferClojureForm && parenNestingDepth <= referClojureParenNestingDepth) {
|
|
1739 | 1738 | collectReferClojureRenameSymbols = false
|
1740 | 1739 | }
|
1741 | 1740 |
|
1742 |
| - if (referIdx > 0 && parenNestingDepth < referParenNestingDepth) { |
| 1741 | + // we are finished collecting :refer symbols |
| 1742 | + if (referIdx > 0 && parenNestingDepth <= referParenNestingDepth) { |
1743 | 1743 | referIdx = -1
|
1744 | 1744 | referParenNestingDepth = -1
|
| 1745 | + } |
| 1746 | + |
| 1747 | + // we are finished collecting :rename symbols |
| 1748 | + if (renameIdx > 0 && parenNestingDepth <= renameParenNestingDepth) { |
| 1749 | + renameIdx = -1 |
| 1750 | + renameParenNestingDepth = -1 |
| 1751 | + } |
| 1752 | + |
| 1753 | + // we are finished collecting require prefix list symbols |
| 1754 | + if (insideRequireList && parenNestingDepth < requireListParenNestingDepth) { |
| 1755 | + insideRequireList = false |
| 1756 | + requireListParenNestingDepth = -1 |
1745 | 1757 | nextTokenIsRequireDefaultSymbol = false
|
1746 | 1758 | }
|
| 1759 | + |
1747 | 1760 | if (insideRequireForm && requireSymbolIdx > 0) {
|
1748 | 1761 | requireSymbolIdx = -1
|
1749 | 1762 | }
|
|
1775 | 1788 | collectRequireExcludeSymbols = false
|
1776 | 1789 | requireExcludeSymbolParenDepth = -1
|
1777 | 1790 | }
|
1778 |
| - if (insideRequireForm && parenNestingDepth < requireRenameParenNestingDepth) { |
1779 |
| - requireRenameParenNestingDepth = -1 |
1780 |
| - } |
1781 | 1791 |
|
1782 | 1792 | requireMacrosReferNodeIdx = -1
|
1783 | 1793 | requireMacrosRenameIdx = -1
|
|
2187 | 2197 | result.requires[activeRequireIdx].default = node.text
|
2188 | 2198 | nextTokenIsRequireDefaultSymbol = false
|
2189 | 2199 |
|
| 2200 | + // :rename keyword inside a :require list |
| 2201 | + } else if (insideRequireForm && insideRequireList && renameIdx === -1 && isRenameKeyword(node)) { |
| 2202 | + renameIdx = idx |
| 2203 | + renameParenNestingDepth = parenNestingDepth |
| 2204 | + renamesTmp = [] |
| 2205 | + |
2190 | 2206 | // collect :require renames
|
2191 |
| - } else if (insideRequireForm && insideRequireList && requireRenameIdx > 0 && idx > requireRenameIdx && parenNestingDepth > requireRenameParenNestingDepth && isTokenNode2 && isTextNode) { |
| 2207 | + } else if (insideRequireForm && insideRequireList && renameIdx > 0 && idx > renameIdx && parenNestingDepth > renameParenNestingDepth && isTokenNode2 && isTextNode) { |
2192 | 2208 | stackPush(renamesTmp, node.text)
|
2193 | 2209 |
|
2194 | 2210 | if (arraySize(renamesTmp) === 2) {
|
|
2259 | 2275 | activeRequireIdx = inc(activeRequireIdx)
|
2260 | 2276 | requireSymbolIdx = idx
|
2261 | 2277 | requireFormLineNo = lineNo
|
2262 |
| - insidePrefixList = true |
2263 | 2278 |
|
2264 | 2279 | // collect :require symbol inside of a list / vector
|
2265 |
| - } else if (insideRequireForm && insideRequireList && idx > requireNodeIdx && isTokenNode2 && isTextNode && requireSymbolIdx === -1 && !isKeywordNode(node)) { |
| 2280 | + } else if (insideRequireForm && insideRequireList && idx > requireNodeIdx && referIdx === -1 && renameIdx === -1 && isTokenNode2 && isTextNode && requireSymbolIdx === -1 && !isKeywordNode(node)) { |
2266 | 2281 | if (!isArray(result.requires)) {
|
2267 | 2282 | result.requires = []
|
2268 | 2283 | }
|
|
2316 | 2331 | }
|
2317 | 2332 | }
|
2318 | 2333 |
|
2319 |
| - // :rename inside require |
2320 |
| - } else if (insideRequireForm && insideRequireList && idx > requireNodeIdx && isRenameKeyword(node)) { |
2321 |
| - requireRenameIdx = idx |
2322 |
| - requireRenameParenNestingDepth = parenNestingDepth |
2323 |
| - renamesTmp = [] |
2324 |
| - |
2325 | 2334 | // collect require Strings in ClojureScript
|
2326 | 2335 | } else if (insideRequireForm && insideRequireList && idx > requireNodeIdx && isStringNode(node)) {
|
2327 | 2336 | if (!isArray(result.requires)) {
|
|
0 commit comments