protected void addTypeDiagnostics(IAcceptor<? super AbstractDiagnostic> acceptor) { for(Map.Entry<XExpression, List<TypeData>> entry: basicGetExpressionTypes().entrySet()) { XExpression expression = entry.getKey(); if (!isPropagatedType(expression)) addTypeDiagnostic(expression, mergeTypeData(expression, entry.getValue(), false, false), acceptor); } }
protected RootResolvedTypes createResolvedTypes(CancelIndicator monitor) { return new RootResolvedTypes(this, monitor); }
protected void processDeferredLogic() { for(IAcceptor<? super IResolvedTypes> runnable: getDeferredLogic()) { runnable.accept(this); } clearDeferredLogic(); } }
protected IResolvedTypes resolve(CancelIndicator monitor) { operationCanceledManager.checkCanceled(monitor); if (isInvalidRoot()) { return IResolvedTypes.NULL; } RootResolvedTypes result = createResolvedTypes(monitor); IFeatureScopeSession session = batchScopeProvider.newSession(root.eResource()); computeTypes(result, session); result.resolveUnboundTypeParameters(); result.resolveProxies(); result.addDiagnostics(root.eResource()); result.processDeferredLogic(); return result; }
public void addDiagnostics(final Resource resource) { if (resource instanceof XtextResource) { if (((XtextResource) resource).isValidationDisabled()) return; } class DiagnosticAcceptor implements IAcceptor<AbstractDiagnostic> { @Override public void accept(/* @Nullable */ AbstractDiagnostic diagnostic) { if (diagnostic instanceof EObjectDiagnosticImpl) { Severity severity = ((EObjectDiagnosticImpl) diagnostic).getSeverity(); if (severity == Severity.ERROR) { resource.getErrors().add(diagnostic); } else if (severity == Severity.WARNING) { resource.getWarnings().add(diagnostic); } } else { resource.getErrors().add(diagnostic); } } } DiagnosticAcceptor acceptor = new DiagnosticAcceptor(); addQueuedDiagnostics(acceptor); addLinkingDiagnostics(acceptor); addTypeDiagnostics(acceptor); }
@Override public Map<XExpression, List<TypeData>> basicGetExpressionTypes() { return super.basicGetExpressionTypes(); } }
public void resolveProxies() { Map<XExpression, IApplicableCandidate> candidates = basicGetLinkingMap(); for(IApplicableCandidate candidate: candidates.values()) { candidate.applyToModel(this); } }
public void resolveUnboundTypeParameters() { for(UnboundTypeReference unbound: basicGetTypeParameters().values()) { unbound.resolve(); } }
protected void addLinkingDiagnostics(IAcceptor<? super AbstractDiagnostic> acceptor) { Map<XExpression, IApplicableCandidate> candidates = basicGetLinkingMap(); for(IApplicableCandidate candidate: candidates.values()) { candidate.validate(acceptor); } }