internal DebugValueEvaluationResult(DebugStackFrame stackFrame, string expression, string name, JObject json) : base(stackFrame, expression, name) { var repr = json["repr"]; if (repr != null) { _reprObj = repr as JObject; if (_reprObj == null) { throw new InvalidDataException(Invariant($"'repr' must be an object in:\n\n{json}")); } } TypeName = json.Value <string>("type"); Length = json.Value <int?>("length"); AttributeCount = json.Value <int?>("attr_count"); SlotCount = json.Value <int?>("slot_count"); NameCount = json.Value <int?>("name_count"); var classes = json.Value <JArray>("classes"); if (classes != null) { Classes = classes.Select(t => t.Value <string>()).ToArray(); } var dim = json.Value <JArray>("dim"); if (dim != null) { Dim = dim.Select(t => t.Value <int>()).ToArray(); } var kind = json.Value <string>("kind"); switch (kind) { case null: case "[[": Kind = DebugValueEvaluationResultKind.UnnamedItem; break; case "$": Kind = DebugValueEvaluationResultKind.NamedItem; break; case "@": Kind = DebugValueEvaluationResultKind.Slot; break; default: throw new InvalidDataException(Invariant($"Invalid kind '{kind}' in:\n\n{json}")); } var flags = json.Value <JArray>("flags")?.Select(v => v.Value <string>()); if (flags != null) { foreach (var flag in flags) { switch (flag) { case "atomic": Flags |= DebugValueEvaluationResultFlags.Atomic; break; case "recursive": Flags |= DebugValueEvaluationResultFlags.Recursive; break; case "has_parent_env": Flags |= DebugValueEvaluationResultFlags.HasParentEnvironment; break; default: throw new InvalidDataException(Invariant($"Unrecognized flag '{flag}' in:\n\n{json}")); } } } }
internal DebugValueEvaluationResult(DebugStackFrame stackFrame, string expression, string name, JObject json) : base(stackFrame, expression, name) { var repr = json["repr"]; if (repr != null) { _reprObj = repr as JObject; if (_reprObj == null) { throw new InvalidDataException(Invariant($"'repr' must be an object in:\n\n{json}")); } } TypeName = json.Value<string>("type"); Length = json.Value<int?>("length"); AttributeCount = json.Value<int?>("attr_count"); SlotCount = json.Value<int?>("slot_count"); NameCount = json.Value<int?>("name_count"); var classes = json.Value<JArray>("classes"); if (classes != null) { Classes = classes.Select(t => t.Value<string>()).ToArray(); } var dim = json.Value<JArray>("dim"); if (dim != null) { Dim = dim.Select(t => t.Value<int>()).ToArray(); } var kind = json.Value<string>("kind"); switch (kind) { case null: case "[[": Kind = DebugValueEvaluationResultKind.UnnamedItem; break; case "$": Kind = DebugValueEvaluationResultKind.NamedItem; break; case "@": Kind = DebugValueEvaluationResultKind.Slot; break; default: throw new InvalidDataException(Invariant($"Invalid kind '{kind}' in:\n\n{json}")); } var flags = json.Value<JArray>("flags")?.Select(v => v.Value<string>()); if (flags != null) { foreach (var flag in flags) { switch (flag) { case "atomic": Flags |= DebugValueEvaluationResultFlags.Atomic; break; case "recursive": Flags |= DebugValueEvaluationResultFlags.Recursive; break; case "has_parent_env": Flags |= DebugValueEvaluationResultFlags.HasParentEnvironment; break; default: throw new InvalidDataException(Invariant($"Unrecognized flag '{flag}' in:\n\n{json}")); } } } }