Bug 577558: [Ltk-Model] Add direct dectection of errors in embedded
foreign AST nodes to ExtModelLabelProvider
Change-Id: Ib0f24f9695b1ea072573ca8d21a83df568d506cd
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/ExtModelLabelProvider.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/ExtModelLabelProvider.java
index 4eed447..b041a01 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/ExtModelLabelProvider.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/ExtModelLabelProvider.java
@@ -264,9 +264,21 @@
return true;
}
- private boolean hasAstError(final SourceElement<?> sourceElement) {
- final var astNode= sourceElement.getAdapter(AstNode.class);
- return (astNode != null && Asts.hasErrors(astNode));
+ private boolean hasAstError(final SourceElement<?> element) {
+ final boolean embedding= ((element.getElementType() & LtkModelElement.MASK_C1) == LtkModelElement.C1_EMBEDDED);
+ AstNode astNode;
+ if ((astNode= element.getAdapter(AstNode.class)) != null
+ && Asts.hasErrors(astNode) ) {
+ return true;
+ }
+ if (embedding) {
+ final var embeddedElement= ((EmbeddingForeignElement<?, ?>)element).getForeignElement();
+ if (embeddedElement != null && (astNode= embeddedElement.getAdapter(AstNode.class)) != null
+ && Asts.hasErrors(astNode) ) {
+ return true;
+ }
+ }
+ return false;
}
private int getProblemFlag(final IAnnotationModel model, final SourceElement<?> sourceElement) {