82
}
83
};
85
>
while (scanner.scan() !== JSONSyntaxKind.EOF) {
86
>
const currentPos = scanner.getPosition();
87
>
const kind = scanner.getToken();
88
>
89
>
let goodKind = false;
90
>
switch (kind) {
91
>
case JSONSyntaxKind.OpenBracketToken:
92
goodKind = true;
93
arrayLevel++;
94
checkRangeStatus(currentPos, State.BEFORE_OBJECT);
95
break;
97
goodKind = true;
98
arrayLevel--;
99
checkRangeStatus(currentPos, State.INVALID);
100
break;
102
goodKind = true;
103
checkRangeStatus(currentPos, State.BEFORE_OBJECT);
104
break;
106
goodKind = true;
107
objLevel++;
108
checkRangeStatus(currentPos, State.INVALID);
109
break;
111
goodKind = true;
112
objLevel--;
113
checkRangeStatus(currentPos, State.AFTER_OBJECT);
114
break;
116
>
case JSONSyntaxKind.LineBreakTrivia:
117
>
goodKind = true;
118
>
}
119
>
120
>
if (currentPos >= desiredPosition && (currentState !== State.INVALID || lastValidPos !== -1)) {
121
let acceptPosition: number;
122
let acceptState: State;