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) {