/// <summary> /// Add a diagnostic to the bag. /// </summary> /// <param name="diagnostics"></param> /// <param name="code"></param> /// <param name="args"></param> /// <returns></returns> public static LanguageDiagnosticInfo Add(this DiagnosticBag diagnostics, ErrorCode code, Location location, params object[] args) { var info = new LanguageDiagnosticInfo(code, args); var diag = new LanguageDiagnostic(info, location); diagnostics.Add(diag); return(info); }
public static LanguageDiagnosticInfo Add(this DiagnosticBag diagnostics, ImmutableArray <ISymbol> symbols, ErrorCode code, Location location, params object[] args) { var info = new SymbolDiagnosticInfo(symbols, ImmutableArray <Location> .Empty, code, args); var diag = new LanguageDiagnostic(info, location); diagnostics.Add(diag); return(info); }
protected override void ForceCompleteNode(CancellationToken cancellationToken) { var values = this.GetChildValues(); Debug.Assert(values.Length == 2); if (values.Length == 2) { var first = (values[0].Values.FirstOrDefault() as Symbol)?.ModelObject as MetaPropertyBuilder; var second = (values[1].Values.FirstOrDefault() as Symbol)?.ModelObject as MetaPropertyBuilder; if (first != null && second != null) { first.OppositeProperties.Add(second); return; } this.DiagnosticBag.Add(LanguageDiagnostic.Create(ModelErrorCode.ERR_CannotSetOppositeProperty, this.Syntax.GetLocation(), values[0], values[1])); return; } this.DiagnosticBag.Add(LanguageDiagnostic.Create(ModelErrorCode.ERR_CannotSetOppositeProperty, this.Syntax.GetLocation(), (object)null, (object)null)); }