Example #1
0
        /// <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);
        }
Example #2
0
        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);
        }
Example #3
0
        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));
        }