diff --git a/src/core/tokenize/match.ts b/src/core/tokenize/match.ts index 1de4ee9766..aca6c06d29 100644 --- a/src/core/tokenize/match.ts +++ b/src/core/tokenize/match.ts @@ -50,7 +50,7 @@ export function _matchGrammar ( // Without the global flag, lastIndex won't work flagsToAdd += 'g'; } - if (pattern.source.includes('(?<') && pattern.hasIndices === false) { + if (pattern.source?.includes('(?<') && pattern.hasIndices === false) { // Has named groups, we need to be able to capture their indices flagsToAdd += 'd'; } diff --git a/src/core/tokenize/util.ts b/src/core/tokenize/util.ts index e41d67699c..3736638353 100644 --- a/src/core/tokenize/util.ts +++ b/src/core/tokenize/util.ts @@ -10,7 +10,7 @@ export function resolve ( let ret = reference ?? undefined; if (typeof ret === 'string') { - ret = prism.languageRegistry.getLanguage(ret)?.grammar; + ret = prism.languageRegistry.getLanguage(ret)?.resolvedGrammar; } if (typeof ret === 'function' && ret.length === 0) { @@ -20,6 +20,7 @@ export function resolve ( if (typeof ret === 'object' && ret.$rest) { let restGrammar = resolve.call(prism, ret.$rest) ?? {}; + delete ret.$rest; if (typeof restGrammar === 'object') { ret = { ...ret, ...restGrammar };