File tree Expand file tree Collapse file tree 3 files changed +34
-4
lines changed
test/feature/TypeAssertions Expand file tree Collapse file tree 3 files changed +34
-4
lines changed Original file line number Diff line number Diff line change @@ -3760,7 +3760,12 @@ export class Parser {
3760
3760
this . eat_ ( COMMA ) ;
3761
3761
args . push ( this . parseType_ ( ) ) ;
3762
3762
}
3763
- this . eat_ ( CLOSE_ANGLE ) ;
3763
+
3764
+ var token = this . nextCloseAngle_ ( ) ;
3765
+ if ( token . type !== CLOSE_ANGLE ) {
3766
+ return this . parseUnexpectedToken_ ( token . type ) ;
3767
+ }
3768
+
3764
3769
return new TypeArguments ( this . getTreeLocation_ ( start ) , args ) ;
3765
3770
}
3766
3771
@@ -4104,6 +4109,10 @@ export class Parser {
4104
4109
return this . scanner_ . nextTemplateLiteralToken ( ) ;
4105
4110
}
4106
4111
4112
+ nextCloseAngle_ ( ) {
4113
+ return this . scanner_ . nextCloseAngle ( ) ;
4114
+ }
4115
+
4107
4116
isAtEnd ( ) {
4108
4117
return this . scanner_ . isAtEnd ( ) ;
4109
4118
}
Original file line number Diff line number Diff line change @@ -256,6 +256,25 @@ export class Scanner {
256
256
return t ;
257
257
}
258
258
259
+ /**
260
+ * Called for the close angle for type generics. This allows type expressions
261
+ * like `Array<Array<number>>` to be parsed as `Array<Array<number> >`.
262
+ */
263
+ nextCloseAngle ( ) {
264
+ switch ( token . type ) {
265
+ case GREATER_EQUAL :
266
+ case RIGHT_SHIFT :
267
+ case RIGHT_SHIFT_EQUAL :
268
+ case UNSIGNED_RIGHT_SHIFT :
269
+ case UNSIGNED_RIGHT_SHIFT_EQUAL :
270
+ this . index -= token . type . length - 1 ;
271
+ lastToken = createToken ( CLOSE_ANGLE , index ) ;
272
+ token = scanToken ( ) ;
273
+ return lastToken ;
274
+ }
275
+ return nextToken ( ) ;
276
+ }
277
+
259
278
/** @return {Token } */
260
279
nextToken ( ) {
261
280
return nextToken ( ) ;
Original file line number Diff line number Diff line change @@ -9,6 +9,8 @@ assert.throw(() => {
9
9
var a : Array < number > = [ 's' ] ;
10
10
} );
11
11
12
- // TODO(arv): Issue #1467
13
- // var e: Array< Array < number > > = [ [ ] ] ;
14
- // var f: Array<Array<number> > = [[3, 4], [5]];
12
+ var e: Array< Array < number > > = [ [ ] ] ;
13
+ var e : Array < Array < number > > = [ [ ] ] ;
14
+ var f : Array < Array < number > >= [ [ 3 , 4 ] , [ 5 ] ] ;
15
+ var g : Array < Array < Array < number > >> = [ [ [ ] ] ] ;
16
+ var h : Array < Array < Array < number > >>= [ [ [ ] ] ] ;
You can’t perform that action at this time.
0 commit comments