@@ -61,14 +61,15 @@ runInEachFileSystem(() => {
61
61
{
62
62
fileName,
63
63
templates : {
64
- 'TestCmp' : `<div>{{ mySignal1 }} {{ mySignal2 }}</div>` ,
64
+ 'TestCmp' : `<div>{{ mySignal1 }} {{ mySignal2 }} {{ !mySignal3 }} </div>` ,
65
65
} ,
66
66
source : `
67
67
import {signal, Signal} from '@angular/core';
68
68
69
69
export class TestCmp {
70
70
mySignal1 = signal<number>(0);
71
71
mySignal2: Signal<number>;
72
+ mySignal3 = signal<number>(0);
72
73
}` ,
73
74
} ,
74
75
] ) ;
@@ -81,11 +82,12 @@ runInEachFileSystem(() => {
81
82
{ } /* options */ ,
82
83
) ;
83
84
const diags = extendedTemplateChecker . getDiagnosticsForComponent ( component ) ;
84
- expect ( diags . length ) . toBe ( 2 ) ;
85
+ expect ( diags . length ) . toBe ( 3 ) ;
85
86
expect ( diags [ 0 ] . category ) . toBe ( ts . DiagnosticCategory . Warning ) ;
86
87
expect ( diags [ 0 ] . code ) . toBe ( ngErrorCode ( ErrorCode . INTERPOLATED_SIGNAL_NOT_INVOKED ) ) ;
87
88
expect ( getSourceCodeForDiagnostic ( diags [ 0 ] ) ) . toBe ( `mySignal1` ) ;
88
89
expect ( getSourceCodeForDiagnostic ( diags [ 1 ] ) ) . toBe ( `mySignal2` ) ;
90
+ expect ( getSourceCodeForDiagnostic ( diags [ 2 ] ) ) . toBe ( `mySignal3` ) ;
89
91
} ) ;
90
92
91
93
it ( 'should produce a warning when a readonly signal is not invoked' , ( ) => {
@@ -638,13 +640,15 @@ runInEachFileSystem(() => {
638
640
{
639
641
fileName,
640
642
templates : {
641
- 'TestCmp' : `<div [${ binding } ]="mySignal"></div>` ,
643
+ 'TestCmp' : `<div [${ binding } ]="mySignal"></div>
644
+ <div [${ binding } ]="!negatedSignal"></div>` ,
642
645
} ,
643
646
source : `
644
647
import {signal} from '@angular/core';
645
648
646
649
export class TestCmp {
647
650
mySignal = signal<number>(0);
651
+ negatedSignal = signal<number>(0);
648
652
}` ,
649
653
} ,
650
654
] ) ;
@@ -657,10 +661,11 @@ runInEachFileSystem(() => {
657
661
{ } /* options */ ,
658
662
) ;
659
663
const diags = extendedTemplateChecker . getDiagnosticsForComponent ( component ) ;
660
- expect ( diags . length ) . toBe ( 1 ) ;
664
+ expect ( diags . length ) . toBe ( 2 ) ;
661
665
expect ( diags [ 0 ] . category ) . toBe ( ts . DiagnosticCategory . Warning ) ;
662
666
expect ( diags [ 0 ] . code ) . toBe ( ngErrorCode ( ErrorCode . INTERPOLATED_SIGNAL_NOT_INVOKED ) ) ;
663
667
expect ( getSourceCodeForDiagnostic ( diags [ 0 ] ) ) . toBe ( `mySignal` ) ;
668
+ expect ( getSourceCodeForDiagnostic ( diags [ 1 ] ) ) . toBe ( `negatedSignal` ) ;
664
669
} ) ;
665
670
666
671
it ( `should not produce a warning when signal is invoked on ${ name } binding` , ( ) => {
@@ -669,13 +674,15 @@ runInEachFileSystem(() => {
669
674
{
670
675
fileName,
671
676
templates : {
672
- 'TestCmp' : `<div [${ binding } ]="mySignal()"></div>` ,
677
+ 'TestCmp' : `<div [${ binding } ]="mySignal()"></div>
678
+ <div [${ binding } ]="!negatedSignal()"></div>` ,
673
679
} ,
674
680
source : `
675
681
import {signal} from '@angular/core';
676
682
677
683
export class TestCmp {
678
684
mySignal = signal<number>(0);
685
+ negatedSignal = signal<number>(0);
679
686
}` ,
680
687
} ,
681
688
] ) ;
0 commit comments