From 620cae47cb7558ab2753e3cd54256f1f0897a02a Mon Sep 17 00:00:00 2001 From: Piotr Tomiak Date: Wed, 15 Nov 2023 08:19:28 +0100 Subject: [PATCH] WEB-63164 HTML/Svelte/Angular: improve handling of custom language blocks in HTML parser - name refactorings and JSDoc GitOrigin-RevId: f725452ab58c810fbf68ce32a2ca4eac243b85b0 --- .../com/intellij/lang/html/HtmlParsing.java | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/xml/xml-psi-impl/src/com/intellij/lang/html/HtmlParsing.java b/xml/xml-psi-impl/src/com/intellij/lang/html/HtmlParsing.java index e403b3a77b79..da1091234ba5 100644 --- a/xml/xml-psi-impl/src/com/intellij/lang/html/HtmlParsing.java +++ b/xml/xml-psi-impl/src/com/intellij/lang/html/HtmlParsing.java @@ -85,7 +85,7 @@ public class HtmlParsing { } } - flushIncompleteItemsWhile((item) -> true); + flushIncompleteStackItemsWhile((item) -> true); if (error != null) { error.error(XmlPsiBundle.message("xml.parsing.top.level.element.is.not.completed")); @@ -95,19 +95,19 @@ public class HtmlParsing { } - protected final void completeTopItem() { + protected final void completeTopStackItem() { popItemFromStack().done(myBuilder, null, false); } - protected final void completeTopItemBefore(@Nullable PsiBuilder.Marker beforeMarker) { + protected final void completeTopStackItemBefore(@Nullable PsiBuilder.Marker beforeMarker) { popItemFromStack().done(myBuilder, beforeMarker, false); } - protected final void flushIncompleteItemsWhile(Predicate itemFilter) { - flushIncompleteItemsWhile(null, itemFilter); + protected final void flushIncompleteStackItemsWhile(Predicate itemFilter) { + flushIncompleteStackItemsWhile(null, itemFilter); } - protected final void flushIncompleteItemsWhile(@Nullable PsiBuilder.Marker beforeMarker, Predicate itemFilter) { + protected final void flushIncompleteStackItemsWhile(@Nullable PsiBuilder.Marker beforeMarker, Predicate itemFilter) { while (!myItemsStack.isEmpty() && itemFilter.test(myItemsStack.peek())) { myItemsStack.pop().done(myBuilder, beforeMarker, true); } @@ -175,7 +175,7 @@ public class HtmlParsing { HtmlTagInfo info = createHtmlTagInfo(originalTagName, tagStart); while (openingTagAutoClosesTagInStack(info)) { - completeTopItemBefore(tagStart); + completeTopStackItemBefore(tagStart); } pushItemToStack(info); @@ -443,7 +443,7 @@ public class HtmlParsing { throw new IllegalStateException( "Unexpected item on stack: " + myItemsStack); } - completeTopItem(); + completeTopStackItem(); } protected IElementType getHtmlTagElementType(@NotNull HtmlTagInfo info, int tagLevel) { @@ -743,6 +743,13 @@ public class HtmlParsing { } public interface HtmlParserStackItem { + /** + * Make all of associated with the item markers dropped or done. + * + * @param builder current PsiBuilder + * @param beforeMarker an optional marker before, which the item should be done + * @param incomplete whether the item is missing the closing tag, token, etc. + */ void done(@NotNull PsiBuilder builder, @Nullable PsiBuilder.Marker beforeMarker, boolean incomplete); }