@@ -52,18 +52,56 @@ func DoTypeAndSymbolBaseline(
52
52
53
53
fullWalker := newTypeWriterWalker (program , hasErrorBaseline )
54
54
55
- if ! opts .IsSubmodule {
56
- t .Run ("type" , func (t * testing.T ) {
57
- defer testutil .RecoverAndFail (t , "Panic on creating type baseline for test " + header )
58
- checkBaselines (t , baselinePath , allFiles , fullWalker , header , opts , false /*isSymbolBaseline*/ )
59
- })
60
- }
55
+ t .Run ("type" , func (t * testing.T ) {
56
+ defer testutil .RecoverAndFail (t , "Panic on creating type baseline for test " + header )
57
+
58
+ // !!! Remove once the type baselines print node reuse lines
59
+ typesOpts := opts
60
+ typesOpts .DiffFixupOld = func (s string ) string {
61
+ var sb strings.Builder
62
+ sb .Grow (len (s ))
63
+
64
+ for line := range strings .SplitSeq (s , "\n " ) {
65
+ if isTypeBaselineNodeReuseLine (line ) {
66
+ continue
67
+ }
68
+ sb .WriteString (line )
69
+ sb .WriteString ("\n " )
70
+ }
71
+
72
+ return sb .String ()[:sb .Len ()- 1 ]
73
+ }
74
+
75
+ checkBaselines (t , baselinePath , allFiles , fullWalker , header , typesOpts , false /*isSymbolBaseline*/ )
76
+ })
61
77
t .Run ("symbol" , func (t * testing.T ) {
62
78
defer testutil .RecoverAndFail (t , "Panic on creating symbol baseline for test " + header )
63
79
checkBaselines (t , baselinePath , allFiles , fullWalker , header , opts , true /*isSymbolBaseline*/ )
64
80
})
65
81
}
66
82
83
+ func isTypeBaselineNodeReuseLine (line string ) bool {
84
+ line , ok := strings .CutPrefix (line , ">" )
85
+ if ! ok {
86
+ return false
87
+ }
88
+ line = strings .TrimLeft (line [1 :], " " )
89
+ line , ok = strings .CutPrefix (line , ":" )
90
+ if ! ok {
91
+ return false
92
+ }
93
+
94
+ for _ , c := range line {
95
+ switch c {
96
+ case ' ' , '^' , '\r' :
97
+ // Okay
98
+ default :
99
+ return false
100
+ }
101
+ }
102
+ return true
103
+ }
104
+
67
105
func checkBaselines (
68
106
t * testing.T ,
69
107
baselinePath string ,
@@ -308,7 +346,7 @@ func (walker *typeWriterWalker) writeTypeOrSymbol(node *ast.Node, isSymbolWalk b
308
346
! ast .IsMetaProperty (node .Parent ) &&
309
347
! isImportStatementName (node ) &&
310
348
! isExportStatementName (node ) &&
311
- ! isIntrinsicJsxTag (node ) {
349
+ ! isIntrinsicJsxTag (node , walker . currentSourceFile ) {
312
350
typeString = t .AsIntrinsicType ().IntrinsicName ()
313
351
} else {
314
352
// !!! TODO: full type printing and underline when we have node builder
@@ -400,12 +438,13 @@ func isExportStatementName(node *ast.Node) bool {
400
438
return false
401
439
}
402
440
403
- func isIntrinsicJsxTag (node * ast.Node ) bool {
441
+ func isIntrinsicJsxTag (node * ast.Node , sourceFile * ast. SourceFile ) bool {
404
442
if ! (ast .IsJsxOpeningElement (node .Parent ) || ast .IsJsxClosingElement (node .Parent ) || ast .IsJsxSelfClosingElement (node .Parent )) {
405
443
return false
406
444
}
407
445
if node .Parent .TagName () != node {
408
446
return false
409
447
}
410
- return checker .IsIntrinsicJsxName (node .Text ())
448
+ text := scanner .GetSourceTextOfNodeFromSourceFile (sourceFile , node , false /*includeTrivia*/ )
449
+ return checker .IsIntrinsicJsxName (text )
411
450
}
0 commit comments