1212package com .redhat .qute .services ;
1313
1414import static com .redhat .qute .services .diagnostics .DiagnosticDataFactory .createDiagnostic ;
15+ import static com .redhat .qute .services .diagnostics .DiagnosticDataFactory .createDiagnosticWithTags ;
1516
1617import java .nio .file .Files ;
1718import java .nio .file .Path ;
2627
2728import org .eclipse .lsp4j .Diagnostic ;
2829import org .eclipse .lsp4j .DiagnosticSeverity ;
30+ import org .eclipse .lsp4j .DiagnosticTag ;
2931import org .eclipse .lsp4j .Range ;
3032import org .eclipse .lsp4j .jsonrpc .CancelChecker ;
3133
5456import com .redhat .qute .parser .template .Template ;
5557import com .redhat .qute .parser .template .sections .IncludeSection ;
5658import com .redhat .qute .parser .template .sections .LoopSection ;
59+ import com .redhat .qute .parser .template .sections .WithSection ;
5760import com .redhat .qute .project .JavaMemberResult ;
5861import com .redhat .qute .project .QuteProject ;
5962import com .redhat .qute .project .datamodel .JavaDataModelCache ;
@@ -246,6 +249,9 @@ private void validateDataModel(Node parent, Template template, ResolvingJavaType
246249 case INCLUDE :
247250 validateIncludeSection ((IncludeSection ) section , diagnostics );
248251 break ;
252+ case WITH :
253+ validateWithSection ((WithSection ) section , diagnostics );
254+ break ;
249255 default :
250256 validateSectionTag (section , template , resolvingJavaTypeContext , diagnostics );
251257 }
@@ -345,6 +351,24 @@ private static void validateIncludeSection(IncludeSection includeSection, List<D
345351 }
346352 }
347353
354+ /**
355+ * Report that `#with` section is deprecated.
356+ *
357+ * @param withSection the with section
358+ * @param diagnostics the diagnostics to fill
359+ */
360+ private static void validateWithSection (WithSection withSection , List <Diagnostic > diagnostics ) {
361+ if (withSection != null ) {
362+ List <DiagnosticTag > tags = Collections .singletonList (DiagnosticTag .Deprecated );
363+ // Section withTag = new Section("with", withSection.getStartTagNameOpenOffset(),
364+ // withSection.getStartTagNameCloseOffset());
365+ Range range = QutePositionUtility .selectStartTagName (withSection );
366+ Diagnostic diagnostic = createDiagnosticWithTags (range , DiagnosticSeverity .Warning ,
367+ QuteErrorCode .DeprecatedWithSection , tags );
368+ diagnostics .add (diagnostic );
369+ }
370+ }
371+
348372 private ResolvedJavaTypeInfo validateExpression (Expression expression , Section ownerSection , Template template ,
349373 ResolutionContext resolutionContext , ResolvingJavaTypeContext resolvingJavaTypeContext ,
350374 List <Diagnostic > diagnostics ) {
@@ -391,7 +415,7 @@ private ResolvedJavaTypeInfo validateExpressionParts(Parts parts, Section ownerS
391415 ResolvedJavaTypeInfo resolvedJavaType = null ;
392416 String namespace = null ;
393417 for (int i = 0 ; i < parts .getChildCount (); i ++) {
394- Part current = (( Part ) parts .getChild (i ));
418+ Part current = (parts .getChild (i ));
395419
396420 if (current .isLast ()) {
397421 // It's the last part, check if it is not ended with '.'
@@ -586,7 +610,7 @@ private ResolvedJavaTypeInfo validateObjectPart(ObjectPart objectPart, Section o
586610
587611 /**
588612 * Validate the given property, method part.
589- *
613+ *
590614 * @param part the property, method part to validate.
591615 * @param ownerSection the owner section and null otherwise.
592616 * @param template the template.
@@ -596,7 +620,7 @@ private ResolvedJavaTypeInfo validateObjectPart(ObjectPart objectPart, Section o
596620 * @param iterableOfType the iterable of type.
597621 * @param diagnostics the diagnostic list to fill.
598622 * @param resolvingJavaTypeContext the resolving Java type context.
599- *
623+ *
600624 * @return the Java type returned by the member part and null otherwise.
601625 */
602626 private ResolvedJavaTypeInfo validateMemberPart (Part part , Section ownerSection , Template template ,
@@ -617,7 +641,7 @@ private ResolvedJavaTypeInfo validateMemberPart(Part part, Section ownerSection,
617641
618642 /**
619643 * Validate the given property part.
620- *
644+ *
621645 * @param part the property part to validate.
622646 * @param ownerSection the owner section and null otherwise.
623647 * @param template the template.
@@ -627,7 +651,7 @@ private ResolvedJavaTypeInfo validateMemberPart(Part part, Section ownerSection,
627651 * @param iterableOfType the iterable of type.
628652 * @param diagnostics the diagnostic list to fill.
629653 * @param resolvingJavaTypeContext the resolving Java type context.
630- *
654+ *
631655 * @return the Java type returned by the member part and null otherwise.
632656 */
633657 private ResolvedJavaTypeInfo validatePropertyPart (PropertyPart part , Section ownerSection , Template template ,
@@ -650,7 +674,7 @@ private ResolvedJavaTypeInfo validatePropertyPart(PropertyPart part, Section own
650674
651675 /**
652676 * Validate the given method part.
653- *
677+ *
654678 * @param part the method part to validate.
655679 * @param ownerSection the owner section and null otherwise.
656680 * @param template the template.
@@ -660,7 +684,7 @@ private ResolvedJavaTypeInfo validatePropertyPart(PropertyPart part, Section own
660684 * @param iterableOfType the iterable of type.
661685 * @param diagnostics the diagnostic list to fill.
662686 * @param resolvingJavaTypeContext the resolving Java type context.
663- *
687+ *
664688 * @return the Java type returned by the member part and null otherwise.
665689 */
666690 private ResolvedJavaTypeInfo validateMethodPart (MethodPart methodPart , Section ownerSection , Template template ,
0 commit comments