test(compiler-cli): add source-map compliance tests for inline-templates (#39939)
This test migrates source-mapping tests to the new compliance test framework. The original tests are found in the file at: `packages/compiler-cli/test/ngtsc/template_mapping_spec.ts`. These new tests also check the mappings resulting from partial compilation followed by linking, after flattening the pair of source-maps that each process generates. Note that there are some differences between the mappings for full compile and linked compile modes, due to how TypeScript and Babel use source-span information on AST nodes. To accommodate this, there are two expectation files for most of these source files. PR Close #39939
This commit is contained in:
parent
9066ca9e92
commit
b8714c384f
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,923 @@
|
|||
{
|
||||
"$schema": "../../test_case_schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "should map simple element with content (full compile)",
|
||||
"inputFiles": [
|
||||
"simple_element.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map simple element with content (partial compile)",
|
||||
"inputFiles": [
|
||||
"simple_element.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "simple_element.js",
|
||||
"expected": "simple_element_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map void element (full compile)",
|
||||
"inputFiles": [
|
||||
"void_element.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map void element (partial compile)",
|
||||
"inputFiles": [
|
||||
"void_element.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "void_element.js",
|
||||
"expected": "void_element_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a mix of interpolated and static content (full compile)",
|
||||
"inputFiles": [
|
||||
"interpolation_basic.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a mix of interpolated and static content (partial compile)",
|
||||
"inputFiles": [
|
||||
"interpolation_basic.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "interpolation_basic.js",
|
||||
"expected": "interpolation_basic_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a complex interpolated expression (full compile)",
|
||||
"inputFiles": [
|
||||
"interpolation_complex.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a complex interpolated expression (partial compile)",
|
||||
"inputFiles": [
|
||||
"interpolation_complex.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "interpolation_complex.js",
|
||||
"expected": "interpolation_complex_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map interpolated properties (full compile)",
|
||||
"inputFiles": [
|
||||
"interpolation_properties.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map interpolated properties (partial compile)",
|
||||
"inputFiles": [
|
||||
"interpolation_properties.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "interpolation_properties.js",
|
||||
"expected": "interpolation_properties_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map interpolation with pipe (full compile)",
|
||||
"inputFiles": [
|
||||
"interpolation_with_pipe.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map interpolation with pipe (partial compile)",
|
||||
"inputFiles": [
|
||||
"interpolation_with_pipe.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "interpolation_with_pipe.js",
|
||||
"expected": "interpolation_with_pipe_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a simple input binding expression (full compile)",
|
||||
"inputFiles": [
|
||||
"input_binding_simple.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a simple input binding expression (partial compile)",
|
||||
"inputFiles": [
|
||||
"input_binding_simple.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "input_binding_simple.js",
|
||||
"expected": "input_binding_simple_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a complex input binding expression (full compile)",
|
||||
"inputFiles": [
|
||||
"input_binding_complex.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a complex input binding expression (partial compile)",
|
||||
"inputFiles": [
|
||||
"input_binding_complex.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "input_binding_complex.js",
|
||||
"expected": "input_binding_complex_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a longhand input binding expression (full compile)",
|
||||
"inputFiles": [
|
||||
"input_binding_longhand.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a longhand input binding expression (partial compile)",
|
||||
"inputFiles": [
|
||||
"input_binding_longhand.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "input_binding_longhand.js",
|
||||
"expected": "input_binding_longhand_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a simple output binding expression (full compile)",
|
||||
"inputFiles": [
|
||||
"output_binding_simple.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a simple output binding expression (partial compile)",
|
||||
"inputFiles": [
|
||||
"output_binding_simple.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "output_binding_simple.js",
|
||||
"expected": "output_binding_simple_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a complex output binding expression (full compile)",
|
||||
"inputFiles": [
|
||||
"output_binding_complex.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a complex output binding expression (partial compile)",
|
||||
"inputFiles": [
|
||||
"output_binding_complex.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "output_binding_complex.js",
|
||||
"expected": "output_binding_complex_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a longhand output binding expression (full compile)",
|
||||
"inputFiles": [
|
||||
"output_binding_longhand.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a longhand output binding expression (partial compile)",
|
||||
"inputFiles": [
|
||||
"output_binding_longhand.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "output_binding_longhand.js",
|
||||
"expected": "output_binding_longhand_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a two-way binding expression (full compile)",
|
||||
"inputFiles": [
|
||||
"two_way_binding_simple.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a two-way binding expression (partial compile)",
|
||||
"inputFiles": [
|
||||
"two_way_binding_simple.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "two_way_binding_simple.js",
|
||||
"expected": "two_way_binding_simple_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a longhand two-way binding expression (full compile)",
|
||||
"inputFiles": [
|
||||
"two_way_binding_longhand.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a longhand two-way binding expression (partial compile)",
|
||||
"inputFiles": [
|
||||
"two_way_binding_longhand.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "two_way_binding_longhand.js",
|
||||
"expected": "two_way_binding_longhand_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a class input binding (full compile)",
|
||||
"inputFiles": [
|
||||
"input_binding_class.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map a class input binding (partial compile)",
|
||||
"inputFiles": [
|
||||
"input_binding_class.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "input_binding_class.js",
|
||||
"expected": "input_binding_class_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map *ngIf scenario (full compile)",
|
||||
"inputFiles": [
|
||||
"ng_if_simple.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map *ngIf scenario (partial compile)",
|
||||
"inputFiles": [
|
||||
"ng_if_simple.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "ng_if_simple.js",
|
||||
"expected": "ng_if_simple_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map ng-template [ngIf] scenario (full compile)",
|
||||
"inputFiles": [
|
||||
"ng_if_templated.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map ng-template [ngIf] scenario (partial compile)",
|
||||
"inputFiles": [
|
||||
"ng_if_templated.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "ng_if_templated.js",
|
||||
"expected": "ng_if_templated_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map *ngFor scenario (full compile)",
|
||||
"inputFiles": [
|
||||
"ng_for_simple.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map *ngFor scenario (partial compile)",
|
||||
"inputFiles": [
|
||||
"ng_for_simple.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "ng_for_simple.js",
|
||||
"expected": "ng_for_simple_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map ng-template [ngFor] scenario (full compile)",
|
||||
"inputFiles": [
|
||||
"ng_for_templated.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map ng-template [ngFor] scenario (partial compile)",
|
||||
"inputFiles": [
|
||||
"ng_for_templated.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "ng_for_templated.js",
|
||||
"expected": "ng_for_templated_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map default and selected projection (full compile)",
|
||||
"inputFiles": [
|
||||
"projection.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should map default and selected projection (partial compile)",
|
||||
"inputFiles": [
|
||||
"projection.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "projection.js",
|
||||
"expected": "projection_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should create simple i18n message source-mapping (full compile)",
|
||||
"inputFiles": [
|
||||
"i18n_message_simple.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should create simple i18n message source-mapping (partial compile)",
|
||||
"inputFiles": [
|
||||
"i18n_message_simple.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "i18n_message_simple.js",
|
||||
"expected": "i18n_message_simple_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should create placeholder i18n message source-mappings (full compile)",
|
||||
"inputFiles": [
|
||||
"i18n_message_placeholder.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should create placeholder i18n message source-mappings (partial compile)",
|
||||
"inputFiles": [
|
||||
"i18n_message_placeholder.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "i18n_message_placeholder.js",
|
||||
"expected": "i18n_message_placeholder_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should correctly handle collapsed whitespace in interpolation placeholder i18n message source-mappings (full compile)",
|
||||
"inputFiles": [
|
||||
"i18n_message_interpolation_whitespace.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should correctly handle collapsed whitespace in interpolation placeholder i18n message source-mappings (partial compile)",
|
||||
"inputFiles": [
|
||||
"i18n_message_interpolation_whitespace.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "i18n_message_interpolation_whitespace.js",
|
||||
"expected": "i18n_message_interpolation_whitespace_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should correctly handle collapsed whitespace in element placeholder i18n message source-mappings (full compile)",
|
||||
"inputFiles": [
|
||||
"i18n_message_element_whitespace.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should correctly handle collapsed whitespace in element placeholder i18n message source-mappings (partial compile)",
|
||||
"inputFiles": [
|
||||
"i18n_message_element_whitespace.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "i18n_message_element_whitespace.js",
|
||||
"expected": "i18n_message_element_whitespace_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should create tag (container) placeholder i18n message source-mappings (full compile)",
|
||||
"inputFiles": [
|
||||
"i18n_message_container_tag.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should create tag (container) placeholder i18n message source-mappings (partial compile)",
|
||||
"inputFiles": [
|
||||
"i18n_message_container_tag.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "i18n_message_container_tag.js",
|
||||
"expected": "i18n_message_container_tag_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should create (simple string) inline template source-mapping (full compile)",
|
||||
"inputFiles": [
|
||||
"update_mode.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should create (simple string) inline template source-mapping (partial compile)",
|
||||
"inputFiles": [
|
||||
"update_mode.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "update_mode.js",
|
||||
"expected": "update_mode_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should create correct inline template source-mapping when the source contains escape sequences (full compile)",
|
||||
"inputFiles": [
|
||||
"escape_sequences.ts"
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"full compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "should create correct inline template source-mapping when the source contains escape sequences (partial compile)",
|
||||
"inputFiles": [
|
||||
"escape_sequences.ts"
|
||||
],
|
||||
"expectations": [
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"generated": "escape_sequences.js",
|
||||
"expected": "escape_sequences_partial.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"compilationModeFilter": [
|
||||
"linked compile"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"sourceMap": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
consts: [[1, "some-class"]]
|
||||
…
|
||||
i0.ɵɵelementStart(0, "div", 0) // SOURCE: "/escape_sequences.ts" <div class=\"some-class\">
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<div class=\"some-class\">this is a test</div>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
consts: [[1, "some-class"]]
|
||||
…
|
||||
.ɵɵelementStart(0, "div", 0) // SOURCE: "/escape_sequences.ts" <div class=\"some-class\">
|
|
@ -0,0 +1,13 @@
|
|||
`Hello, ${ // SOURCE: "/i18n_message_container_tag.ts" Hello,
|
||||
…
|
||||
"\uFFFD#2\uFFFD" // SOURCE: "/i18n_message_container_tag.ts" <b>
|
||||
…
|
||||
}:START_BOLD_TEXT:World${ // SOURCE: "/i18n_message_container_tag.ts" World
|
||||
…
|
||||
"\uFFFD/#2\uFFFD" // SOURCE: "/i18n_message_container_tag.ts" </b>
|
||||
…
|
||||
}:CLOSE_BOLD_TEXT:!` // SOURCE: "/i18n_message_container_tag.ts" !
|
||||
…
|
||||
i0.ɵɵelementStart(0, "div") // SOURCE: "/i18n_message_container_tag.ts" <div i18n>
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/i18n_message_container_tag.ts" </div>
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<div i18n>Hello, <b>World</b>!</div>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
$localize`Hello, ${ // SOURCE: "/i18n_message_container_tag.ts" Hello,
|
||||
…
|
||||
"\uFFFD#2\uFFFD" // SOURCE: "/i18n_message_container_tag.ts" <b>
|
||||
…
|
||||
}:START_BOLD_TEXT:World${ // SOURCE: "/i18n_message_container_tag.ts" World
|
||||
…
|
||||
"\uFFFD/#2\uFFFD" // SOURCE: "/i18n_message_container_tag.ts" </b>
|
||||
…
|
||||
}:CLOSE_BOLD_TEXT:!` // SOURCE: "/i18n_message_container_tag.ts" !
|
||||
…
|
||||
.ɵɵelementStart(0, "div") // SOURCE: "/i18n_message_container_tag.ts" <div i18n>
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵelem // SOURCE: "/i18n_message_container_tag.ts" </div>'
|
|
@ -0,0 +1,20 @@
|
|||
` pre-p ${ // SOURCE: "/i18n_message_element_whitespace.ts" pre-p\\n
|
||||
…
|
||||
"\uFFFD#2\uFFFD" // SOURCE: "/i18n_message_element_whitespace.ts" <p>\\n
|
||||
…
|
||||
}:START_PARAGRAPH: in-p ${ // SOURCE: "/i18n_message_element_whitespace.ts" in-p\\n
|
||||
…
|
||||
"\uFFFD/#2\uFFFD" // SOURCE: "/i18n_message_element_whitespace.ts" </p>
|
||||
…
|
||||
}:CLOSE_PARAGRAPH: post-p\n` // SOURCE: "/i18n_message_element_whitespace.ts" post-p\\n
|
||||
…
|
||||
|
||||
i0.ɵɵelementStart(0, "div") // SOURCE: "/i18n_message_element_whitespace.ts" <div i18n>\\n
|
||||
…
|
||||
i0.ɵɵi18nStart(1, 0) // SOURCE: "/i18n_message_element_whitespace.ts" <div i18n>\\n
|
||||
…
|
||||
i0.ɵɵelement(2, "p") // SOURCE: "/i18n_message_element_whitespace.ts" <p>\\n
|
||||
…
|
||||
i0.ɵɵi18nEnd() // SOURCE: "/i18n_message_element_whitespace.ts" </div>
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/i18n_message_element_whitespace.ts" </div>
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<div i18n>\n pre-p\n <p>\n in-p\n </p>\n post-p\n</div>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
$localize` pre-p ${ // SOURCE: "/i18n_message_element_whitespace.ts" pre-p\\n
|
||||
…
|
||||
"\uFFFD#2\uFFFD" // SOURCE: "/i18n_message_element_whitespace.ts" <p>\\n
|
||||
…
|
||||
}:START_PARAGRAPH: in-p ${ // SOURCE: "/i18n_message_element_whitespace.ts" in-p\\n
|
||||
…
|
||||
"\uFFFD/#2\uFFFD" // SOURCE: "/i18n_message_element_whitespace.ts" </p>\\n
|
||||
…
|
||||
}:CLOSE_PARAGRAPH: post-p\n` // SOURCE: "/i18n_message_element_whitespace.ts" post-p\\n
|
||||
…
|
||||
|
||||
.ɵɵelementStart(0, "div") // SOURCE: "/i18n_message_element_whitespace.ts" <div i18n>\\n
|
||||
…
|
||||
.ɵɵi18nStart(1, 0) // SOURCE: "/i18n_message_element_whitespace.ts" <div i18n>\\n
|
||||
…
|
||||
.ɵɵelement(2, "p") // SOURCE: "/i18n_message_element_whitespace.ts" <p>\\n
|
||||
…
|
||||
.ɵɵi18nEnd() // SOURCE: "/i18n_message_element_whitespace.ts" </div>'
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵelem // SOURCE: "/i18n_message_element_whitespace.ts" </div>'
|
|
@ -0,0 +1,11 @@
|
|||
$localize ` pre-title ${
|
||||
"\uFFFD0\uFFFD" // SOURCE: "/i18n_message_interpolation_whitespace.ts" {{title_value}}
|
||||
}:INTERPOLATION: post-title` // SOURCE: "/i18n_message_interpolation_whitespace.ts" post-title
|
||||
…
|
||||
$localize ` pre-body ${
|
||||
"\uFFFD0\uFFFD" // SOURCE: "/i18n_message_interpolation_whitespace.ts" {{body_value}}
|
||||
}:INTERPOLATION: post-body` // SOURCE: "/i18n_message_interpolation_whitespace.ts" post-body
|
||||
…
|
||||
i0.ɵɵelementStart(0, "div", 0) // SOURCE: "/i18n_message_interpolation_whitespace.ts" <div i18n title="
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/i18n_message_interpolation_whitespace.ts" </div>
|
|
@ -0,0 +1,9 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template:
|
||||
'<div i18n title=" pre-title {{title_value}} post-title" i18n-title> pre-body {{body_value}} post-body</div>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
$localize ` pre-title ${
|
||||
"\uFFFD0\uFFFD" // SOURCE: "/i18n_message_interpolation_whitespace.ts" {{title_value}}
|
||||
}:INTERPOLATION: post-title` // SOURCE: "/i18n_message_interpolation_whitespace.ts" post-title" i18n-title>
|
||||
…
|
||||
$localize ` pre-body ${
|
||||
"\uFFFD0\uFFFD" // SOURCE: "/i18n_message_interpolation_whitespace.ts" {{body_value}}
|
||||
}:INTERPOLATION: post-body` // SOURCE: "/i18n_message_interpolation_whitespace.ts" post-body
|
||||
…
|
||||
.ɵɵelementStart(0, "div", 0) // SOURCE: "/i18n_message_interpolation_whitespace.ts" <div i18n title="
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵelementEnd() // SOURCE: "/i18n_message_interpolation_whitespace.ts" </div>'
|
|
@ -0,0 +1,9 @@
|
|||
`Hello, ${ // SOURCE: "/i18n_message_placeholder.ts" Hello,
|
||||
…
|
||||
"\uFFFD0\uFFFD" // SOURCE: "/i18n_message_placeholder.ts" {{name}}
|
||||
…
|
||||
}:INTERPOLATION:!` // SOURCE: "/i18n_message_placeholder.ts" !
|
||||
…
|
||||
i0.ɵɵelementStart(0, "div") // SOURCE: "/i18n_message_placeholder.ts" <div i18n>
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/i18n_message_placeholder.ts" </div>
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<div i18n>Hello, {{name}}!</div>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
$localize`Hello, ${ // SOURCE: "/i18n_message_placeholder.ts" Hello,
|
||||
…
|
||||
"\uFFFD0\uFFFD" // SOURCE: "/i18n_message_placeholder.ts" {{name}}
|
||||
…
|
||||
}:INTERPOLATION:!` // SOURCE: "/i18n_message_placeholder.ts" !
|
||||
…
|
||||
.ɵɵelementStart(0, "div") // SOURCE: "/i18n_message_placeholder.ts" <div i18n>
|
||||
…
|
||||
.ɵɵelementEnd() // SOURCE: "/i18n_message_placeholder.ts" </div>'
|
|
@ -0,0 +1,3 @@
|
|||
`Hello, World!` // SOURCE: "/i18n_message_simple.ts" Hello, World!
|
||||
…
|
||||
i0.ɵɵelementStart(0, "div") // SOURCE: "/i18n_message_simple.ts" <div i18n>
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<div i18n>Hello, World!</div>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
$localize`Hello, World!` // SOURCE: "/i18n_message_simple.ts" Hello, World!
|
||||
…
|
||||
.ɵɵelementStart(0, "div") // SOURCE: "/i18n_message_simple.ts" <div i18n>
|
|
@ -0,0 +1,7 @@
|
|||
i0.ɵɵelementStart(0, "div") // SOURCE: "/input_binding_class.ts" <div
|
||||
…
|
||||
i0.ɵɵtext(1, "Message") // SOURCE: "/input_binding_class.ts" Message
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/input_binding_class.ts" </div>
|
||||
…
|
||||
i0.ɵɵclassProp("initial", ctx.isInitial) // SOURCE: "/input_binding_class.ts" [class.initial]="isInitial"
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<div [class.initial]="isInitial">Message</div>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
.ɵɵelementStart(0, "div") // SOURCE: "/input_binding_class.ts" <div
|
||||
…
|
||||
.ɵɵtext(1, "Message") // SOURCE: "/input_binding_class.ts" Message
|
||||
…
|
||||
.ɵɵelem // SOURCE: "/input_binding_class.ts" </div>'
|
||||
…
|
||||
.ɵɵclassProp("initial", ctx.isInitial) // SOURCE: "/input_binding_class.ts" [class.initial]="isInitial">
|
|
@ -0,0 +1,3 @@
|
|||
i0.ɵɵelement(0, "div", 0) // SOURCE: "/input_binding_complex.ts" <div
|
||||
…
|
||||
i0.ɵɵproperty("attr", ctx.greeting + ctx.name) // SOURCE: "/input_binding_complex.ts" [attr]="greeting + name"
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<div [attr]="greeting + name"></div>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
.ɵɵelement(0, "div", 0) // SOURCE: "/input_binding_complex.ts" <div
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵproperty("attr", ctx.greeting // SOURCE: "/input_binding_complex.ts" [attr]="greeting + name"></div>'
|
|
@ -0,0 +1,3 @@
|
|||
i0.ɵɵelement(0, "div", 0) // SOURCE: "/input_binding_longhand.ts" <div
|
||||
…
|
||||
i0.ɵɵproperty("attr", ctx.name) // SOURCE: "/input_binding_longhand.ts" bind-attr="name"
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<div bind-attr="name"></div>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
.ɵɵelement(0, "div", 0) // SOURCE: "/input_binding_longhand.ts" <div
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵproperty("attr", ctx. // SOURCE: "/input_binding_longhand.ts" bind-attr="name"></div>'
|
|
@ -0,0 +1,3 @@
|
|||
i0.ɵɵelement(0, "div", 0) // SOURCE: "/input_binding_simple.ts" <div
|
||||
…
|
||||
i0.ɵɵproperty("attr", ctx.name) // SOURCE: "/input_binding_simple.ts" [attr]="name"
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<div [attr]="name"></div>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
.ɵɵelement(0, "div", 0) // SOURCE: "/input_binding_simple.ts" <div
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵproperty("attr", c // SOURCE: "/input_binding_simple.ts" [attr]="name"></div>'
|
|
@ -0,0 +1,5 @@
|
|||
i0.ɵɵelementStart(0, "h3") // SOURCE: "/interpolation_basic.ts" <h3>
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/interpolation_basic.ts" </h3>
|
||||
…
|
||||
i0.ɵɵtextInterpolate1("Hello ", ctx.name, "") // SOURCE: "/interpolation_basic.ts" Hello {{ name }}
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<h3>Hello {{ name }}</h3>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
.ɵɵelementStart(0, "h3") // SOURCE: "/interpolation_basic.ts" <h3>
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵele // SOURCE: "/interpolation_basic.ts" </h3>'
|
||||
…
|
||||
.ɵɵtextInterpolate1("Hello ", ctx.name, "") // SOURCE: "/interpolation_basic.ts" Hello {{ name }}
|
|
@ -0,0 +1,5 @@
|
|||
i0.ɵɵelementStart(0, "h2") // SOURCE: "/interpolation_complex.ts" <h2>
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/interpolation_complex.ts" </h2>
|
||||
…
|
||||
i0.ɵɵtextInterpolate(ctx.greeting + " " + ctx.name) // SOURCE: "/interpolation_complex.ts" {{ greeting + " " + name }}
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<h2>{{ greeting + " " + name }}</h2>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
.ɵɵelementStart(0, "h2") // SOURCE: "/interpolation_complex.ts" <h2>
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵele // SOURCE: "/interpolation_complex.ts" </h2>'
|
||||
…
|
||||
.ɵɵtextInterpolate(ctx.greeting + " " + ctx.name) // SOURCE: "/interpolation_complex.ts" {{ greeting + " " + name }}
|
|
@ -0,0 +1,3 @@
|
|||
i0.ɵɵelement(0, "div", 0) // SOURCE: "/interpolation_properties.ts" <div
|
||||
…
|
||||
i0.ɵɵpropertyInterpolate("id", ctx.name) // SOURCE: "/interpolation_properties.ts" id="{{name}}"
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<div id="{{name}}"></div>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
.ɵɵelement(0, "div", 0) // SOURCE: "/interpolation_properties.ts" <div
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵpropertyInterpolat // SOURCE: "/interpolation_properties.ts" id="{{name}}"></div>'
|
|
@ -0,0 +1,5 @@
|
|||
i0.ɵɵelementStart(0, "div") // SOURCE: "/interpolation_with_pipe.ts" <div>
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/interpolation_with_pipe.ts" </div>
|
||||
…
|
||||
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, 200.3, 2)) // SOURCE: "/interpolation_with_pipe.ts" {{200.3 | percent : 2 }}
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<div>{{200.3 | percent : 2 }}</div>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
.ɵɵelementStart(0, "div") // SOURCE: "/interpolation_with_pipe.ts" <div>
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵelem // SOURCE: "/interpolation_with_pipe.ts" </div>'
|
||||
…
|
||||
.ɵɵpipeBind2(2, 1, 200.3, 2)) // SOURCE: "/interpolation_with_pipe.ts" {{200.3 | percent : 2 }}
|
|
@ -0,0 +1,15 @@
|
|||
i0.ɵɵelementStart(0, "div") // SOURCE: "/ng_for_simple.ts" <div *ngFor="let item
|
||||
…
|
||||
i0.ɵɵtext(1) // SOURCE: "/ng_for_simple.ts" {{ item }}
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/ng_for_simple.ts" </div>
|
||||
…
|
||||
i0.ɵɵadvance(1) // SOURCE: "/ng_for_simple.ts" {{ item }}
|
||||
…
|
||||
i0.ɵɵtextInterpolate(item_r1) // SOURCE: "/ng_for_simple.ts" {{ item }}
|
||||
…
|
||||
i0.ɵɵtemplate(0, TestCmp_div_0_Template, 2, 1, "div", 0) // SOURCE: "/ng_for_simple.ts" <div *ngFor="let item
|
||||
…
|
||||
i0.ɵɵproperty("ngForOf", ctx.items) // SOURCE: "/ng_for_simple.ts" of items;
|
||||
…
|
||||
("ngForTrackBy", ctx.trackByFn) // SOURCE: "/ng_for_simple.ts" index as i; trackBy: trackByFn">
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<div *ngFor="let item of items; index as i; trackBy: trackByFn">{{ item }}</div>'
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
.ɵɵelementStart(0, "div");\n // SOURCE: "/ng_for_simple.ts" <div *ngFor="let item
|
||||
…
|
||||
.ɵɵtext(1);\n // SOURCE: "/ng_for_simple.ts" {{ item }}
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵelem // SOURCE: "/ng_for_simple.ts" </div>'
|
||||
…
|
||||
.ɵɵadvance(1);\n // SOURCE: "/ng_for_simple.ts" {{ item }}
|
||||
…
|
||||
.ɵɵtextInterpolate(item_r1);\n }\n}\n\n // SOURCE: "/ng_for_simple.ts" {{ item }}
|
||||
…
|
||||
.ɵɵtemplate(0, TestCmp_div_0_Template, 2, 1, "div", 0) // SOURCE: "/ng_for_simple.ts" <div *ngFor="let item
|
||||
…
|
||||
// TODO: Work out if we can split these two calls
|
||||
.ɵɵproperty("ngForOf", ctx.items)("ngForTrackBy", ctx.trackByFn) // SOURCE: "/ng_for_simple.ts" of items; index as i; trackBy: trackByFn">
|
|
@ -0,0 +1,4 @@
|
|||
i0.ɵɵtext(0) // SOURCE: "/ng_for_templated.ts" {{ item }}
|
||||
…
|
||||
// TODO - map the bindings better
|
||||
i0.ɵɵtextInterpolate(item_r1) // SOURCE: "/ng_for_templated.ts" {{ item }}
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: `<ng-template ngFor [ngForOf]="items" let-item>{{ item }}</ng-template>`
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
.ɵɵtext(0);\n }\n\n if (rf & 2) {\n const item_r1 = ctx.$implicit;\n // SOURCE: "/ng_for_templated.ts" {{ item }}</ng-template>`
|
||||
…
|
||||
// TODO - map the bindings better
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵtextInterpolate(item_r // SOURCE: "/ng_for_templated.ts" {{ item }}</ng-template>`
|
|
@ -0,0 +1,11 @@
|
|||
i0.ɵɵelementStart(0, "div") // SOURCE: "/ng_if_simple.ts" <div *
|
||||
…
|
||||
i0.ɵɵtext(1) // SOURCE: "/ng_if_simple.ts" {{ name }}
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/ng_if_simple.ts" </div>
|
||||
…
|
||||
i0.ɵɵtextInterpolate(ctx_r0.name) // SOURCE: "/ng_if_simple.ts" {{ name }}
|
||||
…
|
||||
i0.ɵɵtemplate(0, TestCmp_div_0_Template, 2, 1, "div", 0) // SOURCE: "/ng_if_simple.ts" <div *
|
||||
…
|
||||
i0.ɵɵproperty("ngIf", ctx.showMessage()) // SOURCE: "/ng_if_simple.ts" ngIf="showMessage()
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<div *ngIf="showMessage()">{{ name }}</div>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
.ɵɵelementStart(0, "div");\n // SOURCE: "/ng_if_simple.ts" <div *
|
||||
…
|
||||
.ɵɵtext(1);\n // SOURCE: "/ng_if_simple.ts" {{ name }}
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵelem // SOURCE: "/ng_if_simple.ts" </div>'
|
||||
…
|
||||
.ɵɵtextInterpolate(ctx_r0.name);\n }\n}\n\n // SOURCE: "/ng_if_simple.ts" {{ name }}
|
||||
…
|
||||
.ɵɵtemplate(0, TestCmp_div_0_Template, 2, 1, "div", 0) // SOURCE: "/ng_if_simple.ts" <div *
|
||||
…
|
||||
.ɵɵproperty("ngIf", ctx.showMessage()) // SOURCE: "/ng_if_simple.ts" ngIf="showMessage()">
|
|
@ -0,0 +1,7 @@
|
|||
i0.ɵɵelementStart(0, "div") // SOURCE: "/ng_if_templated.ts" <div>
|
||||
…
|
||||
// TODO - map the bindings better
|
||||
i0.ɵɵelementEnd() // SOURCE: "/ng_if_templated.ts" </div>
|
||||
…
|
||||
// TODO: the `ctx_r...` appears to be dependent upon previous tests!!!
|
||||
// TODO: expectMapping(mappings, { source: '{{ name }}', generated: 'i0.ɵɵtextInterpolate(ctx_r0.name)', sourceUrl: '../ng_if_templated.ts'});
|
|
@ -0,0 +1,12 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: `
|
||||
<ng-template [ngIf]="showMessage()">
|
||||
<div>{{ name }}</div>
|
||||
<hr>
|
||||
</ng-template>`
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
.ɵɵelementStart(0, "div");\n // SOURCE: "/ng_if_templated.ts" <div>
|
||||
…
|
||||
// TODO - map the bindings better
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵelementEnd();\n // SOURCE: "/ng_if_templated.ts" </div>\n
|
||||
…
|
||||
// TODO: the `ctx_r...` appears to be dependent upon previous tests!!!
|
||||
// TODO: expectMapping(mappings, { source: '{{ name }}', generated: 'i0.ɵɵtextInterpolate(ctx_r0.name)', sourceUrl: '../ng_if_templated.ts'});
|
|
@ -0,0 +1,11 @@
|
|||
i0.ɵɵelementStart(0, "button", 0) // SOURCE: "/output_binding_complex.ts" <button
|
||||
…
|
||||
ctx.items.push( // SOURCE: "/output_binding_complex.ts" items.push(
|
||||
…
|
||||
"item" // SOURCE: "/output_binding_complex.ts" 'item'
|
||||
…
|
||||
+ ctx.items.length) // SOURCE: "/output_binding_complex.ts" + items.length)
|
||||
…
|
||||
i0.ɵɵtext(1, "Add Item") // SOURCE: "/output_binding_complex.ts" Add Item
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/output_binding_complex.ts" </button>
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: `<button (click)="items.push('item' + items.length)">Add Item</button>`,
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
.ɵɵelementStart(0, "button", 0) // SOURCE: "/output_binding_complex.ts" <button
|
||||
…
|
||||
.ɵɵlistener("click", function TestCmp_Template_button_click_0_listener() {\n // SOURCE: "/output_binding_complex.ts" (click)="
|
||||
…
|
||||
ctx.items.push( // SOURCE: "/output_binding_complex.ts" items.push(
|
||||
…
|
||||
// TODO: fix the mappings here
|
||||
"item" // SOURCE: "/output_binding_complex.ts" 'item' + items.length)">
|
||||
…
|
||||
.ɵɵtext(1, "Add Item") // SOURCE: "/output_binding_complex.ts" Add Item
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵelement // SOURCE: "/output_binding_complex.ts" </button>`
|
|
@ -0,0 +1,8 @@
|
|||
…
|
||||
i0.ɵɵelementStart(0, "button", 0) // SOURCE: "/output_binding_longhand.ts" <button
|
||||
…
|
||||
ctx.doSomething() // SOURCE: "/output_binding_longhand.ts" doSomething()
|
||||
…
|
||||
i0.ɵɵtext(1, "Do it") // SOURCE: "/output_binding_longhand.ts" Do it
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/output_binding_longhand.ts" </button>
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<button on-click="doSomething()">Do it</button>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
…
|
||||
.ɵɵelementStart(0, "button", 0) // SOURCE: "/output_binding_longhand.ts" <button
|
||||
…
|
||||
ctx.doSomething() // SOURCE: "/output_binding_longhand.ts" doSomething()">
|
||||
…
|
||||
.ɵɵtext(1, "Do it") // SOURCE: "/output_binding_longhand.ts" Do it
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵelement // SOURCE: "/output_binding_longhand.ts" </button>'
|
|
@ -0,0 +1,9 @@
|
|||
i0.ɵɵelementStart(0, "button", 0) // SOURCE: "/output_binding_simple.ts" <button
|
||||
…
|
||||
i0.ɵɵlistener("click", function TestCmp_Template_button_click_0_listener() { return // SOURCE: "/output_binding_simple.ts" (click)="
|
||||
…
|
||||
ctx.doSomething() // SOURCE: "/output_binding_simple.ts" doSomething()
|
||||
…
|
||||
i0.ɵɵtext(1, "Do it") // SOURCE: "/output_binding_simple.ts" Do it
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/output_binding_simple.ts" </button>
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<button (click)="doSomething()">Do it</button>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
.ɵɵelementStart(0, "button", 0) // SOURCE: "/output_binding_simple.ts" <button
|
||||
…
|
||||
.ɵɵlistener("click", function TestCmp_Template_button_click_0_listener() {\n // SOURCE: "/output_binding_simple.ts" (click)="
|
||||
…
|
||||
ctx.doSomething() // SOURCE: "/output_binding_simple.ts" doSomething()">
|
||||
…
|
||||
.ɵɵtext(1, "Do it") // SOURCE: "/output_binding_simple.ts" Do it
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵelement // SOURCE: "/output_binding_simple.ts" </button>'
|
|
@ -0,0 +1,11 @@
|
|||
i0.ɵɵelementStart(0, "h3") // SOURCE: "/projection.ts" <h3>
|
||||
…
|
||||
i0.ɵɵprojection(1) // SOURCE: "/projection.ts" <ng-content select="title"></ng-content>
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/projection.ts" </h3>
|
||||
…
|
||||
i0.ɵɵelementStart(2, "div") // SOURCE: "/projection.ts" <div>
|
||||
…
|
||||
i0.ɵɵprojection(3, 1) // SOURCE: "/projection.ts" <ng-content></ng-content>
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/projection.ts" </div>
|
|
@ -0,0 +1,10 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: `
|
||||
<h3><ng-content select="title"></ng-content></h3>
|
||||
<div><ng-content></ng-content></div>`
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
.ɵɵelementStart(0, "h3") // SOURCE: "/projection.ts" <h3>
|
||||
…
|
||||
.ɵɵprojection(1) // SOURCE: "/projection.ts" <ng-content select="title"></ng-content>
|
||||
…
|
||||
.ɵɵelementEnd() // SOURCE: "/projection.ts" </h3>\n
|
||||
…
|
||||
.ɵɵelementStart(2, "div") // SOURCE: "/projection.ts" <div>
|
||||
…
|
||||
.ɵɵprojection(3, 1) // SOURCE: "/projection.ts" <ng-content></ng-content>
|
||||
…
|
||||
.ɵɵelem // SOURCE: "/projection.ts" </div>`
|
|
@ -0,0 +1,5 @@
|
|||
i0.ɵɵelementStart(0, "h1") // SOURCE: "/simple_element.ts" <h1>
|
||||
…
|
||||
i0.ɵɵtext(1, "Heading 1") // SOURCE: "/simple_element.ts" Heading 1
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/simple_element.ts" </h1>
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<h1>Heading 1</h1>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
.ɵɵelementStart(0, "h1") // SOURCE: "/simple_element.ts" <h1>
|
||||
…
|
||||
.ɵɵtext(1, "Heading 1") // SOURCE: "/simple_element.ts" Heading 1
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵele // SOURCE: "/simple_element.ts" </h1>'
|
|
@ -0,0 +1,6 @@
|
|||
i0.ɵɵelementStart(1, "input", 0) // SOURCE: "/two_way_binding_longhand.ts" <input
|
||||
…
|
||||
// TODO: improve mappings here
|
||||
i0.ɵɵlistener("ngModelChange", function TestCmp_Template_input_ngModelChange_1_listener($event) { return ctx.name = $event; }) // SOURCE: "/two_way_binding_longhand.ts" bindon-ngModel="name"
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/two_way_binding_longhand.ts" <input
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: 'Name: <input bindon-ngModel="name">',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
.ɵɵelementStart(1, "input", 0) // SOURCE: "/two_way_binding_longhand.ts" <input
|
||||
…
|
||||
// TODO: improve mappings here
|
||||
.ɵɵlistener("ngModelChange", function TestCmp_Template_input_ngModelChange_1_listener($event) {\n // SOURCE: "/two_way_binding_longhand.ts" bindon-ngModel="name">'
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵelementEnd() // SOURCE: "/two_way_binding_longhand.ts" <input
|
|
@ -0,0 +1,7 @@
|
|||
…
|
||||
i0.ɵɵelementStart(1, "input", 0) // SOURCE: "/two_way_binding_simple.ts" <input
|
||||
…
|
||||
// TODO: improve mappings here
|
||||
i0.ɵɵlistener("ngModelChange", function TestCmp_Template_input_ngModelChange_1_listener($event) { return ctx.name = $event; }) // SOURCE: "/two_way_binding_simple.ts" [(ngModel)]="name"
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/two_way_binding_simple.ts" <input
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: 'Name: <input [(ngModel)]="name">',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
…
|
||||
.ɵɵelementStart(1, "input", 0) // SOURCE: "/two_way_binding_simple.ts" <input
|
||||
…
|
||||
// TODO: improve mappings here
|
||||
.ɵɵlistener("ngModelChange", function TestCmp_Template_input_ngModelChange_1_listener($event) {\n // SOURCE: "/two_way_binding_simple.ts" [(ngModel)]="name">'
|
||||
…
|
||||
.ɵɵelementEnd() // SOURCE: "/two_way_binding_simple.ts" <input
|
|
@ -0,0 +1,15 @@
|
|||
// NOTE: Creation mode
|
||||
i0.ɵɵelementStart(0, "div") // SOURCE: "/update_mode.ts" <div>
|
||||
…
|
||||
i0.ɵɵtext(1, "this is a test") // SOURCE: "/update_mode.ts" this is a test
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/update_mode.ts" </div>
|
||||
…
|
||||
i0.ɵɵelementStart(2, "div") // SOURCE: "/update_mode.ts" <div>
|
||||
…
|
||||
i0.ɵɵtext(3) // SOURCE: "/update_mode.ts" {{ 1 + 2 }}
|
||||
…
|
||||
i0.ɵɵelementEnd() // SOURCE: "/update_mode.ts" </div>
|
||||
…
|
||||
// NOTE: Update mode
|
||||
i0.ɵɵtextInterpolate(1 + 2) // SOURCE: "/update_mode.ts" {{ 1 + 2 }}
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<div>this is a test</div><div>{{ 1 + 2 }}</div>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
// NOTE: Creation mode
|
||||
.ɵɵelementStart(0, "div") // SOURCE: "/update_mode.ts" <div>
|
||||
…
|
||||
.ɵɵtext(1, "this is a test") // SOURCE: "/update_mode.ts" this is a test
|
||||
…
|
||||
.ɵɵelementEnd() // SOURCE: "/update_mode.ts" </div>
|
||||
…
|
||||
.ɵɵelementStart(2, "div") // SOURCE: "/update_mode.ts" <div>
|
||||
…
|
||||
.ɵɵtext(3) // SOURCE: "/update_mode.ts" {{ 1 + 2 }}
|
||||
…
|
||||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵelem // SOURCE: "/update_mode.ts" </div>'
|
||||
…
|
||||
// NOTE: Update mode
|
||||
.ɵɵtextInterpolate(1 + 2) // SOURCE: "/update_mode.ts" {{ 1 + 2 }}
|
|
@ -0,0 +1 @@
|
|||
i0.ɵɵelement(0, "hr") // SOURCE: "/void_element.ts" <hr>
|
|
@ -0,0 +1,8 @@
|
|||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'test-cmp',
|
||||
template: '<hr>',
|
||||
})
|
||||
export class TestCmp {
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
// TODO: Work out how to fix the broken segment for the last item in a template
|
||||
.ɵɵel // SOURCE: "/void_element.ts" <hr>'
|
|
@ -586,37 +586,6 @@ runInEachFileSystem((os) => {
|
|||
});
|
||||
});
|
||||
|
||||
it('should create (simple backtick string) inline template source-mapping', () => {
|
||||
const mappings = compileAndMap('<div>this is a test</div><div>{{ 1 + 2 }}</div>');
|
||||
|
||||
// Creation mode
|
||||
expectMapping(
|
||||
mappings,
|
||||
{generated: 'i0.ɵɵelementStart(0, "div")', source: '<div>', sourceUrl: '../test.ts'});
|
||||
expectMapping(mappings, {
|
||||
generated: 'i0.ɵɵtext(1, "this is a test")',
|
||||
source: 'this is a test',
|
||||
sourceUrl: '../test.ts'
|
||||
});
|
||||
expectMapping(
|
||||
mappings, {generated: 'i0.ɵɵelementEnd()', source: '</div>', sourceUrl: '../test.ts'});
|
||||
expectMapping(
|
||||
mappings,
|
||||
{generated: 'i0.ɵɵelementStart(2, "div")', source: '<div>', sourceUrl: '../test.ts'});
|
||||
expectMapping(
|
||||
mappings, {generated: 'i0.ɵɵtext(3)', source: '{{ 1 + 2 }}', sourceUrl: '../test.ts'});
|
||||
expectMapping(
|
||||
mappings, {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
|
||||
expectMapping(mappings, {
|
||||
generated: 'i0.ɵɵtextInterpolate(1 + 2)',
|
||||
source: '{{ 1 + 2 }}',
|
||||
sourceUrl: '../test.ts'
|
||||
});
|
||||
});
|
||||
|
||||
it('should create correct inline template source-mapping when the source contains escape sequences',
|
||||
() => {
|
||||
// Note that the escaped double quotes, which need un-escaping to be parsed correctly.
|
||||
|
|
Loading…
Reference in New Issue