internal static (JToken, SourceRange) ReadTokenRange(JsonReader reader, SourceContext sourceContext) { var range = sourceContext.CallStack.Count > 0 ? sourceContext.CallStack.Peek().DeepClone() : new SourceRange(); var token = SourcePoint.ReadObjectWithSourcePoints(reader, JToken.Load, out var start, out var end); range.StartPoint = start; range.EndPoint = end; var designer = token.SelectToken("$designer", errorWhenNoMatch: false); if (designer != null) { range.Designer = designer; } return(token, range); }
internal SourceScope(SourceContext sourceContext, SourceRange range) { this.sourceContext = sourceContext ?? throw new ArgumentNullException(nameof(sourceContext)); this.sourceContext.CallStack.Push(range); }