@@ -343,7 +343,7 @@ func (p *Parser) parseSourceFileWorker() *ast.SourceFile {
343
343
func (p * Parser ) finishSourceFile (result * ast.SourceFile , isDeclarationFile bool ) {
344
344
result .CommentDirectives = p .scanner .CommentDirectives ()
345
345
result .Pragmas = getCommentPragmas (& p .factory , p .sourceText )
346
- processPragmasIntoFields (result )
346
+ p . processPragmasIntoFields (result )
347
347
result .SetDiagnostics (attachFileToDiagnostics (p .diagnostics , result ))
348
348
result .ExternalModuleIndicator = isFileProbablyExternalModule (result ) // !!!
349
349
result .IsDeclarationFile = isDeclarationFile
@@ -6434,16 +6434,16 @@ func extractPragmas(commentRange ast.CommentRange, text string) []ast.Pragma {
6434
6434
}
6435
6435
argName := extractName (text , pos )
6436
6436
if argName == "" {
6437
- return nil
6437
+ break
6438
6438
}
6439
6439
pos = skipBlanks (text , pos + len (argName ))
6440
6440
if ! match (text , pos , "=" ) {
6441
- return nil
6441
+ break
6442
6442
}
6443
6443
pos = skipBlanks (text , pos + 1 )
6444
6444
value , ok := extractQuotedString (text , pos )
6445
6445
if ! ok {
6446
- return nil
6446
+ break
6447
6447
}
6448
6448
args [argName ] = ast.PragmaArgument {
6449
6449
Name : argName ,
@@ -6483,6 +6483,9 @@ func extractPragmas(commentRange ast.CommentRange, text string) []ast.Pragma {
6483
6483
}
6484
6484
start := skipBlanks (text , pos + len (pragmaName )+ 1 )
6485
6485
pos = skipNonBlanks (text , start )
6486
+ if pos == start {
6487
+ break
6488
+ }
6486
6489
args := make (map [string ]ast.PragmaArgument , 1 )
6487
6490
args ["factory" ] = ast.PragmaArgument {
6488
6491
Name : "factory" ,
@@ -6553,7 +6556,7 @@ func extractQuotedString(text string, pos int) (string, bool) {
6553
6556
return text [start :pos ], true
6554
6557
}
6555
6558
6556
- func processPragmasIntoFields ( context * ast. SourceFile /* !!! reportDiagnostic func( *ast.Diagnostic)*/ ) {
6559
+ func ( p * Parser ) processPragmasIntoFields ( context * ast.SourceFile ) {
6557
6560
context .CheckJsDirective = nil
6558
6561
context .ReferencedFiles = nil
6559
6562
context .TypeReferenceDirectives = nil
@@ -6569,10 +6572,10 @@ func processPragmasIntoFields(context *ast.SourceFile /* !!! reportDiagnostic fu
6569
6572
resolutionMode , resolutionModeOk := pragma .Args ["resolution-mode" ]
6570
6573
preserve , preserveOk := pragma .Args ["preserve" ]
6571
6574
noDefaultLib , noDefaultLibOk := pragma .Args ["no-default-lib" ]
6572
-
6573
- if noDefaultLibOk && noDefaultLib .Value == "true" {
6575
+ switch {
6576
+ case noDefaultLibOk && noDefaultLib .Value == "true" :
6574
6577
context .HasNoDefaultLib = true
6575
- } else if typesOk {
6578
+ case typesOk :
6576
6579
var parsed core.ResolutionMode
6577
6580
if resolutionModeOk {
6578
6581
parsed = parseResolutionMode (resolutionMode .Value , types .Pos (), types .End () /*, reportDiagnostic*/ )
@@ -6583,20 +6586,20 @@ func processPragmasIntoFields(context *ast.SourceFile /* !!! reportDiagnostic fu
6583
6586
ResolutionMode : parsed ,
6584
6587
Preserve : preserveOk && preserve .Value == "true" ,
6585
6588
})
6586
- } else if libOk {
6589
+ case libOk :
6587
6590
context .LibReferenceDirectives = append (context .LibReferenceDirectives , & ast.FileReference {
6588
6591
TextRange : types .TextRange ,
6589
6592
FileName : lib .Value ,
6590
6593
Preserve : preserveOk && preserve .Value == "true" ,
6591
6594
})
6592
- } else if pathOk {
6595
+ case pathOk :
6593
6596
context .ReferencedFiles = append (context .ReferencedFiles , & ast.FileReference {
6594
6597
TextRange : types .TextRange ,
6595
6598
FileName : path .Value ,
6596
6599
Preserve : preserveOk && preserve .Value == "true" ,
6597
6600
})
6598
- } else {
6599
- // reportDiagnostic(argMap.Pos, argMap.End-argMap.Pos, "Invalid reference directive syntax" )
6601
+ default :
6602
+ p . parseErrorAtRange ( pragma . TextRange , diagnostics . Invalid_reference_directive_syntax )
6600
6603
}
6601
6604
case "ts-check" , "ts-nocheck" :
6602
6605
// _last_ of either nocheck or check in a file is the "winner"
@@ -6610,7 +6613,7 @@ func processPragmasIntoFields(context *ast.SourceFile /* !!! reportDiagnostic fu
6610
6613
}
6611
6614
6612
6615
case "jsx" , "jsxfrag" , "jsximportsource" , "jsxruntime" :
6613
- // !!!
6616
+ // Nothing to do here
6614
6617
default :
6615
6618
panic ("Unhandled pragma kind: " + pragma .Name )
6616
6619
}
0 commit comments