feat(ivy): add ɵɵtextInterpolateX instructions (#30011)
- `ɵɵtextBinding(..., ɵɵinterpolationX())` instructions will now just be `ɵɵtextInterpolate(...)` instructions PR Close #30011
This commit is contained in:
@ -168,7 +168,7 @@ describe('Renderer', () => {
|
||||
ɵngcc0.ɵɵtext(0);
|
||||
} if (rf & 2) {
|
||||
ɵngcc0.ɵɵselect(0);
|
||||
ɵngcc0.ɵɵtextBinding(0, ɵngcc0.ɵɵinterpolation1("", ctx.person.name, ""));
|
||||
ɵngcc0.ɵɵtextInterpolate(ctx.person.name);
|
||||
} }, encapsulation: 2 });
|
||||
/*@__PURE__*/ ɵngcc0.ɵsetClassMetadata(A, [{
|
||||
type: Component,
|
||||
|
@ -810,7 +810,7 @@ describe('compiler compliance', () => {
|
||||
const $myComp$ = $r3$.ɵɵnextContext();
|
||||
const $foo$ = $r3$.ɵɵreference(1);
|
||||
$r3$.ɵɵselect(1);
|
||||
$r3$.ɵɵtextBinding(1, $r3$.ɵɵinterpolation2("", $myComp$.salutation, " ", $foo$, ""));
|
||||
$r3$.ɵɵtextInterpolate2("", $myComp$.salutation, " ", $foo$, "");
|
||||
}
|
||||
}
|
||||
…
|
||||
@ -2074,9 +2074,9 @@ describe('compiler compliance', () => {
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵselect(0);
|
||||
$r3$.ɵɵtextBinding(0, $r3$.ɵɵinterpolation1("", $r3$.ɵɵpipeBind2(1, 3, $r3$.ɵɵpipeBind2(2, 6, ctx.name, ctx.size), ctx.size), ""));
|
||||
$r3$.ɵɵtextInterpolate($r3$.ɵɵpipeBind2(1, 3, $r3$.ɵɵpipeBind2(2, 6, ctx.name, ctx.size), ctx.size));
|
||||
$r3$.ɵɵselect(4);
|
||||
$r3$.ɵɵtextBinding(4, $r3$.ɵɵinterpolation2("", $r3$.ɵɵpipeBindV(5, 9, $r3$.ɵɵpureFunction1(18, $c0$, ctx.name)), " ", ctx.name ? 1 : $r3$.ɵɵpipeBind1(6, 16, 2), ""));
|
||||
$r3$.ɵɵtextInterpolate2("", $r3$.ɵɵpipeBindV(5, 9, $r3$.ɵɵpureFunction1(18, $c0$, ctx.name)), " ", ctx.name ? 1 : $r3$.ɵɵpipeBind1(6, 16, 2), "");
|
||||
}
|
||||
},
|
||||
pipes: [MyPurePipe, MyPipe],
|
||||
@ -2139,14 +2139,14 @@ describe('compiler compliance', () => {
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵselect(0);
|
||||
$r3$.ɵɵtextBinding(0, $r3$.ɵɵinterpolation5(
|
||||
$r3$.ɵɵtextInterpolate5(
|
||||
"0:", i0.ɵɵpipeBind1(1, 5, ctx.name),
|
||||
"1:", i0.ɵɵpipeBind2(2, 7, ctx.name, 1),
|
||||
"2:", i0.ɵɵpipeBind3(3, 10, ctx.name, 1, 2),
|
||||
"3:", i0.ɵɵpipeBind4(4, 14, ctx.name, 1, 2, 3),
|
||||
"4:", i0.ɵɵpipeBindV(5, 19, $r3$.ɵɵpureFunction1(25, $c0$, ctx.name)),
|
||||
""
|
||||
));
|
||||
);
|
||||
}
|
||||
},
|
||||
pipes: [MyPipe],
|
||||
@ -2192,7 +2192,7 @@ describe('compiler compliance', () => {
|
||||
if (rf & 2) {
|
||||
const $user$ = $r3$.ɵɵreference(1);
|
||||
$r3$.ɵɵselect(2);
|
||||
$r3$.ɵɵtextBinding(2, $r3$.ɵɵinterpolation1("Hello ", $user$.value, "!"));
|
||||
$r3$.ɵɵtextInterpolate1("Hello ", $user$.value, "!");
|
||||
}
|
||||
},
|
||||
encapsulation: 2
|
||||
@ -2255,7 +2255,7 @@ describe('compiler compliance', () => {
|
||||
const $foo$ = $r3$.ɵɵreference(1);
|
||||
const $baz$ = $r3$.ɵɵreference(5);
|
||||
$r3$.ɵɵselect(1);
|
||||
$r3$.ɵɵtextBinding(1, $r3$.ɵɵinterpolation3("", $foo$, "-", $bar$, "-", $baz$, ""));
|
||||
$r3$.ɵɵtextInterpolate3("", $foo$, "-", $bar$, "-", $baz$, "");
|
||||
}
|
||||
}
|
||||
function MyComponent_div_3_Template(rf, ctx) {
|
||||
@ -2271,7 +2271,7 @@ describe('compiler compliance', () => {
|
||||
$r3$.ɵɵnextContext();
|
||||
const $foo$ = $r3$.ɵɵreference(1);
|
||||
$r3$.ɵɵselect(1);
|
||||
$r3$.ɵɵtextBinding(1, $r3$.ɵɵinterpolation2(" ", $foo$, "-", $bar$, " "));
|
||||
$r3$.ɵɵtextInterpolate2(" ", $foo$, "-", $bar$, " ");
|
||||
}
|
||||
}
|
||||
…
|
||||
@ -2291,7 +2291,7 @@ describe('compiler compliance', () => {
|
||||
if (rf & 2) {
|
||||
const $foo$ = $r3$.ɵɵreference(1);
|
||||
$r3$.ɵɵselect(2);
|
||||
$r3$.ɵɵtextBinding(2, $r3$.ɵɵinterpolation1(" ", $foo$, " "));
|
||||
$r3$.ɵɵtextInterpolate1(" ", $foo$, " ");
|
||||
}
|
||||
},
|
||||
directives:[IfDirective],
|
||||
@ -2300,9 +2300,7 @@ describe('compiler compliance', () => {
|
||||
|
||||
const result = compile(files, angularFiles);
|
||||
const source = result.source;
|
||||
|
||||
expectEmit(source, MyComponentDefinition, 'Incorrect MyComponent.ngComponentDef');
|
||||
|
||||
});
|
||||
|
||||
it('should support local refs mixed with context assignments', () => {
|
||||
@ -2344,7 +2342,7 @@ describe('compiler compliance', () => {
|
||||
const $item$ = $i0$.ɵɵnextContext().$implicit;
|
||||
const $foo$ = $i0$.ɵɵreference(2);
|
||||
$r3$.ɵɵselect(1);
|
||||
$i0$.ɵɵtextBinding(1, $i0$.ɵɵinterpolation2(" ", $foo$, " - ", $item$, " "));
|
||||
$i0$.ɵɵtextInterpolate2(" ", $foo$, " - ", $item$, " ");
|
||||
}
|
||||
}
|
||||
|
||||
@ -2648,7 +2646,7 @@ describe('compiler compliance', () => {
|
||||
if (rf & 2) {
|
||||
const $item$ = ctx.$implicit;
|
||||
$r3$.ɵɵselect(1);
|
||||
$r3$.ɵɵtextBinding(1, $r3$.ɵɵinterpolation1("", $item$.name, ""));
|
||||
$r3$.ɵɵtextInterpolate($item$.name);
|
||||
}
|
||||
}
|
||||
…
|
||||
@ -2731,7 +2729,7 @@ describe('compiler compliance', () => {
|
||||
const $info$ = ctx.$implicit;
|
||||
const $item$ = $r3$.ɵɵnextContext().$implicit;
|
||||
$r3$.ɵɵselect(1);
|
||||
$r3$.ɵɵtextBinding(1, $r3$.ɵɵinterpolation2(" ", $item$.name, ": ", $info$.description, " "));
|
||||
$r3$.ɵɵtextInterpolate2(" ", $item$.name, ": ", $info$.description, " ");
|
||||
}
|
||||
}
|
||||
|
||||
@ -2749,7 +2747,7 @@ describe('compiler compliance', () => {
|
||||
if (rf & 2) {
|
||||
const $item$ = ctx.$implicit;
|
||||
$r3$.ɵɵselect(2);
|
||||
$r3$.ɵɵtextBinding(2, $r3$.ɵɵinterpolation1("", IDENT.name, ""));
|
||||
$r3$.ɵɵtextInterpolate(IDENT.name);
|
||||
$r3$.ɵɵselect(4);
|
||||
$r3$.ɵɵproperty("forOf", IDENT.infos);
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ describe('compiler compliance: bindings', () => {
|
||||
}
|
||||
if (rf & 2) {
|
||||
$r3$.ɵɵselect(1);
|
||||
$i0$.ɵɵtextBinding(1, $i0$.ɵɵinterpolation1("Hello ", $ctx$.name, ""));
|
||||
$i0$.ɵɵtextInterpolate1("Hello ", $ctx$.name, "");
|
||||
}
|
||||
}`;
|
||||
const result = compile(files, angularFiles);
|
||||
@ -567,7 +567,7 @@ describe('compiler compliance: bindings', () => {
|
||||
if (rf & 2) {
|
||||
const $_r0$ = $i0$.ɵɵreference(1);
|
||||
$r3$.ɵɵselect(4);
|
||||
$i0$.ɵɵtextBinding(4, $i0$.ɵɵinterpolation1(" ", $_r0$.id, " "));
|
||||
$i0$.ɵɵtextInterpolate1(" ", $_r0$.id, " ");
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
@ -93,7 +93,7 @@ describe('r3_view_compiler', () => {
|
||||
|
||||
describe('interpolations', () => {
|
||||
// Regression #21927
|
||||
it('should generate a correct call to bV with more than 8 interpolations', () => {
|
||||
it('should generate a correct call to textInterpolateV with more than 8 interpolations', () => {
|
||||
const files: MockDirectory = {
|
||||
app: {
|
||||
'example.ts': `
|
||||
@ -112,10 +112,19 @@ describe('r3_view_compiler', () => {
|
||||
}
|
||||
};
|
||||
|
||||
const bV_call =
|
||||
`$r3$.ɵɵinterpolationV([" ",ctx.list[0]," ",ctx.list[1]," ",ctx.list[2]," ",ctx.list[3],
|
||||
" ",ctx.list[4]," ",ctx.list[5]," ",ctx.list[6]," ",ctx.list[7]," ",ctx.list[8],
|
||||
" "])`;
|
||||
const bV_call = `
|
||||
…
|
||||
function MyApp_Template(rf, ctx) {
|
||||
if (rf & 1) {
|
||||
$i0$.ɵɵtext(0);
|
||||
}
|
||||
if (rf & 2) {
|
||||
$i0$.ɵɵselect(0);
|
||||
$i0$.ɵɵtextInterpolateV([" ", ctx.list[0], " ", ctx.list[1], " ", ctx.list[2], " ", ctx.list[3], " ", ctx.list[4], " ", ctx.list[5], " ", ctx.list[6], " ", ctx.list[7], " ", ctx.list[8], " "]);
|
||||
}
|
||||
}
|
||||
…
|
||||
`;
|
||||
const result = compile(files, angularFiles);
|
||||
expectEmit(result.source, bV_call, 'Incorrect bV call');
|
||||
});
|
||||
|
@ -999,7 +999,7 @@ describe('compiler compliance: styling', () => {
|
||||
$r3$.ɵɵclassProp(0, $r3$.ɵɵpipeBind2(4, 10, $ctx$.fooExp, 2000));
|
||||
$r3$.ɵɵstylingApply();
|
||||
$r3$.ɵɵselect(5);
|
||||
$r3$.ɵɵtextBinding(5, $r3$.ɵɵinterpolation1(" ", $ctx$.item, ""));
|
||||
$r3$.ɵɵtextInterpolate1(" ", $ctx$.item, "");
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
@ -78,7 +78,7 @@ describe('compiler compliance: template', () => {
|
||||
$i0$.ɵɵselect(0);
|
||||
$i0$.ɵɵproperty("title", $myComp1$.format($outer1$, $middle1$, $inner1$, $myComp1$.component));
|
||||
$r3$.ɵɵselect(1);
|
||||
$i0$.ɵɵtextBinding(1, $i0$.ɵɵinterpolation1(" ", $myComp1$.format($outer1$, $middle1$, $inner1$, $myComp1$.component), " "));
|
||||
$i0$.ɵɵtextInterpolate1(" ", $myComp1$.format($outer1$, $middle1$, $inner1$, $myComp1$.component), " ");
|
||||
}
|
||||
}
|
||||
|
||||
@ -215,7 +215,7 @@ describe('compiler compliance: template', () => {
|
||||
const $item$ = ctx.$implicit;
|
||||
const $i$ = ctx.index;
|
||||
$r3$.ɵɵselect(1);
|
||||
$i0$.ɵɵtextBinding(1, $i0$.ɵɵinterpolation2(" ", $i$, " - ", $item$, " "));
|
||||
$i0$.ɵɵtextInterpolate2(" ", $i$, " - ", $item$, " ");
|
||||
}
|
||||
}
|
||||
// ...
|
||||
@ -272,7 +272,7 @@ describe('compiler compliance: template', () => {
|
||||
const $i$ = $div$.index;
|
||||
const $item$ = $div$.$implicit;
|
||||
$r3$.ɵɵselect(1);
|
||||
$i0$.ɵɵtextBinding(1, $i0$.ɵɵinterpolation2(" ", $i$, " - ", $item$, " "));
|
||||
$i0$.ɵɵtextInterpolate2(" ", $i$, " - ", $item$, " ");
|
||||
}
|
||||
}
|
||||
|
||||
@ -343,7 +343,7 @@ describe('compiler compliance: template', () => {
|
||||
const $middle$ = $i0$.ɵɵnextContext().$implicit;
|
||||
const $myComp$ = $i0$.ɵɵnextContext(2);
|
||||
$r3$.ɵɵselect(1);
|
||||
$i0$.ɵɵtextBinding(1, $i0$.ɵɵinterpolation2(" ", $middle$.value, " - ", $myComp$.name, " "));
|
||||
$i0$.ɵɵtextInterpolate2(" ", $middle$.value, " - ", $myComp$.name, " ");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1961,7 +1961,7 @@ describe('ngtsc behavioral tests', () => {
|
||||
|
||||
env.driveMain();
|
||||
const jsContents = env.getContents('test.js');
|
||||
expect(jsContents).toContain('interpolation1("", ctx.text, "")');
|
||||
expect(jsContents).toContain('ɵɵtextInterpolate(ctx.text)');
|
||||
});
|
||||
|
||||
it('should handle `encapsulation` field', () => {
|
||||
|
@ -44,7 +44,7 @@ describe('template source-mapping', () => {
|
||||
{source: '<h3>', generated: 'i0.ɵɵelementStart(0, "h3")', sourceUrl: '../test.ts'});
|
||||
expect(mappings).toContain({
|
||||
source: 'Hello {{ name }}',
|
||||
generated: 'i0.ɵɵtextBinding(1, i0.ɵɵinterpolation1("Hello ", ctx.name, ""))',
|
||||
generated: 'i0.ɵɵtextInterpolate1("Hello ", ctx.name, "")',
|
||||
sourceUrl: '../test.ts'
|
||||
});
|
||||
expect(mappings).toContain(
|
||||
@ -57,8 +57,7 @@ describe('template source-mapping', () => {
|
||||
{source: '<h2>', generated: 'i0.ɵɵelementStart(0, "h2")', sourceUrl: '../test.ts'});
|
||||
expect(mappings).toContain({
|
||||
source: '{{ greeting + " " + name }}',
|
||||
generated:
|
||||
'i0.ɵɵtextBinding(1, i0.ɵɵinterpolation1("", ctx.greeting + " " + ctx.name, ""))',
|
||||
generated: 'i0.ɵɵtextInterpolate(ctx.greeting + " " + ctx.name)',
|
||||
sourceUrl: '../test.ts'
|
||||
});
|
||||
expect(mappings).toContain(
|
||||
@ -85,8 +84,7 @@ describe('template source-mapping', () => {
|
||||
{source: '<div>', generated: 'i0.ɵɵelementStart(0, "div")', sourceUrl: '../test.ts'});
|
||||
expect(mappings).toContain({
|
||||
source: '{{200.3 | percent : 2 }}',
|
||||
generated:
|
||||
'i0.ɵɵtextBinding(1, i0.ɵɵinterpolation1("", i0.ɵɵpipeBind2(2, 1, 200.3, 2), ""))',
|
||||
generated: 'i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, 200.3, 2))',
|
||||
sourceUrl: '../test.ts'
|
||||
});
|
||||
expect(mappings).toContain(
|
||||
@ -270,7 +268,7 @@ describe('template source-mapping', () => {
|
||||
|
||||
// expect(mappings).toContain({
|
||||
// source: '{{ name }}',
|
||||
// generated: 'i0.ɵɵtextBinding(1, i0.ɵɵinterpolation1("", ctx_r0.name, ""))',
|
||||
// generated: 'i0.ɵɵtextInterpolate(ctx_r0.name)',
|
||||
// sourceUrl: '../test.ts'
|
||||
// });
|
||||
});
|
||||
@ -294,7 +292,7 @@ describe('template source-mapping', () => {
|
||||
|
||||
// expect(mappings).toContain({
|
||||
// source: '{{ name }}',
|
||||
// generated: 'i0.ɵɵtextBinding(1, i0.ɵɵinterpolation1("", ctx_r0.name, ""))',
|
||||
// generated: 'i0.ɵɵtextInterpolate(ctx_r0.name)',
|
||||
// sourceUrl: '../test.ts'
|
||||
// });
|
||||
});
|
||||
@ -370,7 +368,7 @@ describe('template source-mapping', () => {
|
||||
|
||||
// Update mode
|
||||
expect(mappings).toContain({
|
||||
generated: 'i0.ɵɵtextBinding(3, i0.ɵɵinterpolation1("", 1 + 2, ""))',
|
||||
generated: 'i0.ɵɵtextInterpolate(1 + 2)',
|
||||
source: '{{ 1 + 2 }}',
|
||||
sourceUrl: '../test.ts'
|
||||
});
|
||||
@ -396,9 +394,10 @@ describe('template source-mapping', () => {
|
||||
expect(mappings).toContain(
|
||||
{generated: 'i0.ɵɵelementEnd()', source: '</div>', sourceUrl: '../test.ts'});
|
||||
|
||||
// TODO(benlesh): We need to circle back and prevent the extra parens from being generated.
|
||||
// Update mode
|
||||
expect(mappings).toContain({
|
||||
generated: 'i0.ɵɵtextBinding(3, i0.ɵɵinterpolation1("", 1 + 2, ""))',
|
||||
generated: 'i0.ɵɵtextInterpolate(1 + 2)',
|
||||
source: '{{ 1 + 2 }}',
|
||||
sourceUrl: '../test.ts'
|
||||
});
|
||||
@ -452,7 +451,7 @@ describe('template source-mapping', () => {
|
||||
|
||||
// Update mode
|
||||
expect(mappings).toContain({
|
||||
generated: 'i0.ɵɵtextBinding(3, i0.ɵɵinterpolation1("", 1 + 2, ""))',
|
||||
generated: 'i0.ɵɵtextInterpolate(1 + 2)',
|
||||
source: '{{ 1 + 2 }}',
|
||||
sourceUrl: '../dir/test.html'
|
||||
});
|
||||
@ -496,7 +495,7 @@ describe('template source-mapping', () => {
|
||||
|
||||
// Update mode
|
||||
expect(mappings).toContain({
|
||||
generated: 'i0.ɵɵtextBinding(3, i0.ɵɵinterpolation1("", 1 + 2, ""))',
|
||||
generated: 'i0.ɵɵtextInterpolate(1 + 2)',
|
||||
source: '{{ 1 + 2 }}',
|
||||
sourceUrl: '../extraRootDir/test.html'
|
||||
});
|
||||
|
Reference in New Issue
Block a user