diff --git a/crates/angular_conformance/README.md b/crates/angular_conformance/README.md index e255c61b6..8302d8409 100644 --- a/crates/angular_conformance/README.md +++ b/crates/angular_conformance/README.md @@ -4,7 +4,7 @@ A conformance testing framework that validates the oxc Angular compiler implemen ## Overview -This crate extracts test cases from Angular's TypeScript spec files and runs them against the Rust implementation to ensure compatibility. Currently maintains **100% pass rate** across 1,252 extracted test assertions. +This crate extracts test cases from Angular's TypeScript spec files and runs them against the Rust implementation to ensure compatibility. It currently maintains a **100% pass rate** across **1,264** extracted test assertions against Angular **v22.0.0-rc.2**. ## Architecture diff --git a/crates/angular_conformance/fixtures/compiler_facade_interface_spec.json b/crates/angular_conformance/fixtures/compiler_facade_interface_spec.json index 581ec8324..cfaecf2ac 100644 --- a/crates/angular_conformance/fixtures/compiler_facade_interface_spec.json +++ b/crates/angular_conformance/fixtures/compiler_facade_interface_spec.json @@ -1,5 +1,5 @@ { "name": "compiler_facade_interface_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/compiler_facade_interface_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/compiler_facade_interface_spec.ts", "test_groups": [] } diff --git a/crates/angular_conformance/fixtures/expression_parser_ast_spec.json b/crates/angular_conformance/fixtures/expression_parser_ast_spec.json index 4af87fa72..3d1398039 100644 --- a/crates/angular_conformance/fixtures/expression_parser_ast_spec.json +++ b/crates/angular_conformance/fixtures/expression_parser_ast_spec.json @@ -1,6 +1,6 @@ { "name": "ast_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/expression_parser/ast_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/expression_parser/ast_spec.ts", "test_groups": [ { "name": "RecursiveAstVisitor", diff --git a/crates/angular_conformance/fixtures/expression_parser_lexer_spec.json b/crates/angular_conformance/fixtures/expression_parser_lexer_spec.json index 9dbe2a637..800f28615 100644 --- a/crates/angular_conformance/fixtures/expression_parser_lexer_spec.json +++ b/crates/angular_conformance/fixtures/expression_parser_lexer_spec.json @@ -1,6 +1,6 @@ { "name": "lexer_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/expression_parser/lexer_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/expression_parser/lexer_spec.ts", "test_groups": [ { "name": "lexer", diff --git a/crates/angular_conformance/fixtures/expression_parser_parser_spec.json b/crates/angular_conformance/fixtures/expression_parser_parser_spec.json index 29d3ea7a3..3045d33f6 100644 --- a/crates/angular_conformance/fixtures/expression_parser_parser_spec.json +++ b/crates/angular_conformance/fixtures/expression_parser_parser_spec.json @@ -1,6 +1,6 @@ { "name": "parser_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/expression_parser/parser_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/expression_parser/parser_spec.ts", "test_groups": [ { "name": "parser", @@ -1474,6 +1474,32 @@ "type": "CheckAction", "input": "('key' in obj) && true", "expected": "(\"key\" in obj) && true" + }, + { + "type": "CheckAction", + "input": "'in' in {in: foo}", + "expected": "\"in\" in {in: foo}" + } + ] + }, + { + "name": "should throw on invalid in expressions", + "path": "parser/parseAction/should throw on invalid in expressions", + "assertions": [ + { + "type": "ExpectActionError", + "input": "in", + "error_contains": "Unexpected token in" + }, + { + "type": "ExpectActionError", + "input": "in foo", + "error_contains": "Unexpected token in" + }, + { + "type": "ExpectActionError", + "input": "'foo' in", + "error_contains": "Unexpected end of expression: 'foo' in at the end of the expression ['foo' in]" } ] }, @@ -2074,17 +2100,6 @@ } ] }, - { - "name": "should report missing comma between arrow function parameters", - "path": "parser/parseBinding/arrow functions/arrow function validations/should report missing comma between arrow function parameters", - "assertions": [ - { - "type": "ExpectBindingError", - "input": "(a b) => a + b", - "error_contains": "Missing expected ," - } - ] - }, { "name": "should report an error inside the arrow function expression", "path": "parser/parseBinding/arrow functions/arrow function validations/should report an error inside the arrow function expression", diff --git a/crates/angular_conformance/fixtures/expression_parser_serializer_spec.json b/crates/angular_conformance/fixtures/expression_parser_serializer_spec.json index ac501d75e..609823cf9 100644 --- a/crates/angular_conformance/fixtures/expression_parser_serializer_spec.json +++ b/crates/angular_conformance/fixtures/expression_parser_serializer_spec.json @@ -1,6 +1,6 @@ { "name": "serializer_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/expression_parser/serializer_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/expression_parser/serializer_spec.ts", "test_groups": [ { "name": "serializer", diff --git a/crates/angular_conformance/fixtures/i18n_digest_spec.json b/crates/angular_conformance/fixtures/i18n_digest_spec.json index 05d859c67..fa0e734a3 100644 --- a/crates/angular_conformance/fixtures/i18n_digest_spec.json +++ b/crates/angular_conformance/fixtures/i18n_digest_spec.json @@ -1,6 +1,6 @@ { "name": "digest_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/digest_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/digest_spec.ts", "test_groups": [ { "name": "digest", diff --git a/crates/angular_conformance/fixtures/i18n_extractor_merger_spec.json b/crates/angular_conformance/fixtures/i18n_extractor_merger_spec.json index a44b45078..242da7a4f 100644 --- a/crates/angular_conformance/fixtures/i18n_extractor_merger_spec.json +++ b/crates/angular_conformance/fixtures/i18n_extractor_merger_spec.json @@ -1,6 +1,6 @@ { "name": "extractor_merger_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/extractor_merger_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/extractor_merger_spec.ts", "test_groups": [ { "name": "Extractor", @@ -153,8 +153,8 @@ "assertions": [] }, { - "name": "should ignore implicit elements in non translatable ICU messages", - "path": "Extractor/ICU messages/should ignore implicit elements in non translatable ICU messages", + "name": "should ignore implicit elements in non translatable ICU messages 2", + "path": "Extractor/ICU messages/should ignore implicit elements in non translatable ICU messages 2", "assertions": [] } ] diff --git a/crates/angular_conformance/fixtures/i18n_i18n_ast_spec.json b/crates/angular_conformance/fixtures/i18n_i18n_ast_spec.json index 818089368..3b4d43882 100644 --- a/crates/angular_conformance/fixtures/i18n_i18n_ast_spec.json +++ b/crates/angular_conformance/fixtures/i18n_i18n_ast_spec.json @@ -1,6 +1,6 @@ { "name": "i18n_ast_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/i18n_ast_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/i18n_ast_spec.ts", "test_groups": [ { "name": "Message", diff --git a/crates/angular_conformance/fixtures/i18n_i18n_html_parser_spec.json b/crates/angular_conformance/fixtures/i18n_i18n_html_parser_spec.json index c2d406a0f..45b92d79c 100644 --- a/crates/angular_conformance/fixtures/i18n_i18n_html_parser_spec.json +++ b/crates/angular_conformance/fixtures/i18n_i18n_html_parser_spec.json @@ -1,6 +1,6 @@ { "name": "i18n_html_parser_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/i18n_html_parser_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/i18n_html_parser_spec.ts", "test_groups": [ { "name": "I18N html parser", diff --git a/crates/angular_conformance/fixtures/i18n_i18n_parser_spec.json b/crates/angular_conformance/fixtures/i18n_i18n_parser_spec.json index eb1a7575f..e8745b0a0 100644 --- a/crates/angular_conformance/fixtures/i18n_i18n_parser_spec.json +++ b/crates/angular_conformance/fixtures/i18n_i18n_parser_spec.json @@ -1,6 +1,6 @@ { "name": "i18n_parser_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/i18n_parser_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/i18n_parser_spec.ts", "test_groups": [ { "name": "I18nParser", diff --git a/crates/angular_conformance/fixtures/i18n_integration_xliff2_spec.json b/crates/angular_conformance/fixtures/i18n_integration_xliff2_spec.json index 0355e11dc..b42afd958 100644 --- a/crates/angular_conformance/fixtures/i18n_integration_xliff2_spec.json +++ b/crates/angular_conformance/fixtures/i18n_integration_xliff2_spec.json @@ -1,5 +1,5 @@ { "name": "integration_xliff2_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/integration_xliff2_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/integration_xliff2_spec.ts", "test_groups": [] } diff --git a/crates/angular_conformance/fixtures/i18n_integration_xliff_spec.json b/crates/angular_conformance/fixtures/i18n_integration_xliff_spec.json index 08aa18a4c..785927a86 100644 --- a/crates/angular_conformance/fixtures/i18n_integration_xliff_spec.json +++ b/crates/angular_conformance/fixtures/i18n_integration_xliff_spec.json @@ -1,5 +1,5 @@ { "name": "integration_xliff_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/integration_xliff_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/integration_xliff_spec.ts", "test_groups": [] } diff --git a/crates/angular_conformance/fixtures/i18n_integration_xmb_xtb_spec.json b/crates/angular_conformance/fixtures/i18n_integration_xmb_xtb_spec.json index c666a5ebe..1547eeb07 100644 --- a/crates/angular_conformance/fixtures/i18n_integration_xmb_xtb_spec.json +++ b/crates/angular_conformance/fixtures/i18n_integration_xmb_xtb_spec.json @@ -1,5 +1,5 @@ { "name": "integration_xmb_xtb_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/integration_xmb_xtb_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/integration_xmb_xtb_spec.ts", "test_groups": [] } diff --git a/crates/angular_conformance/fixtures/i18n_message_bundle_spec.json b/crates/angular_conformance/fixtures/i18n_message_bundle_spec.json index f71ab7303..6579d602f 100644 --- a/crates/angular_conformance/fixtures/i18n_message_bundle_spec.json +++ b/crates/angular_conformance/fixtures/i18n_message_bundle_spec.json @@ -1,6 +1,6 @@ { "name": "message_bundle_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/message_bundle_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/message_bundle_spec.ts", "test_groups": [ { "name": "MessageBundle", diff --git a/crates/angular_conformance/fixtures/i18n_serializers_i18n_ast_spec.json b/crates/angular_conformance/fixtures/i18n_serializers_i18n_ast_spec.json index 086c1dd80..69e11ab00 100644 --- a/crates/angular_conformance/fixtures/i18n_serializers_i18n_ast_spec.json +++ b/crates/angular_conformance/fixtures/i18n_serializers_i18n_ast_spec.json @@ -1,6 +1,6 @@ { "name": "i18n_ast_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/serializers/i18n_ast_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/serializers/i18n_ast_spec.ts", "test_groups": [ { "name": "i18n AST", diff --git a/crates/angular_conformance/fixtures/i18n_serializers_placeholder_spec.json b/crates/angular_conformance/fixtures/i18n_serializers_placeholder_spec.json index f09cdf163..afdca773a 100644 --- a/crates/angular_conformance/fixtures/i18n_serializers_placeholder_spec.json +++ b/crates/angular_conformance/fixtures/i18n_serializers_placeholder_spec.json @@ -1,6 +1,6 @@ { "name": "placeholder_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/serializers/placeholder_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/serializers/placeholder_spec.ts", "test_groups": [ { "name": "PlaceholderRegistry", diff --git a/crates/angular_conformance/fixtures/i18n_serializers_xliff2_spec.json b/crates/angular_conformance/fixtures/i18n_serializers_xliff2_spec.json index b284b7571..2b8d630d4 100644 --- a/crates/angular_conformance/fixtures/i18n_serializers_xliff2_spec.json +++ b/crates/angular_conformance/fixtures/i18n_serializers_xliff2_spec.json @@ -1,6 +1,6 @@ { "name": "xliff2_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/serializers/xliff2_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/serializers/xliff2_spec.ts", "test_groups": [ { "name": "XLIFF 2.0 serializer", diff --git a/crates/angular_conformance/fixtures/i18n_serializers_xliff_spec.json b/crates/angular_conformance/fixtures/i18n_serializers_xliff_spec.json index 07e541405..7f26539d5 100644 --- a/crates/angular_conformance/fixtures/i18n_serializers_xliff_spec.json +++ b/crates/angular_conformance/fixtures/i18n_serializers_xliff_spec.json @@ -1,6 +1,6 @@ { "name": "xliff_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/serializers/xliff_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/serializers/xliff_spec.ts", "test_groups": [ { "name": "XLIFF serializer", diff --git a/crates/angular_conformance/fixtures/i18n_serializers_xmb_spec.json b/crates/angular_conformance/fixtures/i18n_serializers_xmb_spec.json index 4b8dfa494..00aded913 100644 --- a/crates/angular_conformance/fixtures/i18n_serializers_xmb_spec.json +++ b/crates/angular_conformance/fixtures/i18n_serializers_xmb_spec.json @@ -1,6 +1,6 @@ { "name": "xmb_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/serializers/xmb_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/serializers/xmb_spec.ts", "test_groups": [ { "name": "XMB serializer", diff --git a/crates/angular_conformance/fixtures/i18n_serializers_xml_helper_spec.json b/crates/angular_conformance/fixtures/i18n_serializers_xml_helper_spec.json index 2e502b051..a6a84107b 100644 --- a/crates/angular_conformance/fixtures/i18n_serializers_xml_helper_spec.json +++ b/crates/angular_conformance/fixtures/i18n_serializers_xml_helper_spec.json @@ -1,6 +1,6 @@ { "name": "xml_helper_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/serializers/xml_helper_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/serializers/xml_helper_spec.ts", "test_groups": [ { "name": "XML helper", diff --git a/crates/angular_conformance/fixtures/i18n_serializers_xtb_spec.json b/crates/angular_conformance/fixtures/i18n_serializers_xtb_spec.json index 91aed981f..1490c78c7 100644 --- a/crates/angular_conformance/fixtures/i18n_serializers_xtb_spec.json +++ b/crates/angular_conformance/fixtures/i18n_serializers_xtb_spec.json @@ -1,6 +1,6 @@ { "name": "xtb_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/serializers/xtb_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/serializers/xtb_spec.ts", "test_groups": [ { "name": "XTB serializer", diff --git a/crates/angular_conformance/fixtures/i18n_translation_bundle_spec.json b/crates/angular_conformance/fixtures/i18n_translation_bundle_spec.json index 0e9fbace6..0966156a2 100644 --- a/crates/angular_conformance/fixtures/i18n_translation_bundle_spec.json +++ b/crates/angular_conformance/fixtures/i18n_translation_bundle_spec.json @@ -1,6 +1,6 @@ { "name": "translation_bundle_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/translation_bundle_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/translation_bundle_spec.ts", "test_groups": [ { "name": "TranslationBundle", diff --git a/crates/angular_conformance/fixtures/i18n_whitespace_sensitivity_spec.json b/crates/angular_conformance/fixtures/i18n_whitespace_sensitivity_spec.json index cdb8b6ef3..15cdb22dd 100644 --- a/crates/angular_conformance/fixtures/i18n_whitespace_sensitivity_spec.json +++ b/crates/angular_conformance/fixtures/i18n_whitespace_sensitivity_spec.json @@ -1,6 +1,6 @@ { "name": "whitespace_sensitivity_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/whitespace_sensitivity_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/i18n/whitespace_sensitivity_spec.ts", "test_groups": [ { "name": "i18nPreserveWhitespaceForLegacyExtraction", diff --git a/crates/angular_conformance/fixtures/integration_spec.json b/crates/angular_conformance/fixtures/integration_spec.json index d23da8112..a96e23801 100644 --- a/crates/angular_conformance/fixtures/integration_spec.json +++ b/crates/angular_conformance/fixtures/integration_spec.json @@ -1,6 +1,6 @@ { "name": "integration_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/integration_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/integration_spec.ts", "test_groups": [ { "name": "integration tests", diff --git a/crates/angular_conformance/fixtures/ml_parser_ast_serializer_spec.json b/crates/angular_conformance/fixtures/ml_parser_ast_serializer_spec.json index 8cf0a1423..f2573a382 100644 --- a/crates/angular_conformance/fixtures/ml_parser_ast_serializer_spec.json +++ b/crates/angular_conformance/fixtures/ml_parser_ast_serializer_spec.json @@ -1,6 +1,6 @@ { "name": "ast_serializer_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/ml_parser/ast_serializer_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/ml_parser/ast_serializer_spec.ts", "test_groups": [ { "name": "Node serializer", diff --git a/crates/angular_conformance/fixtures/ml_parser_html_parser_spec.json b/crates/angular_conformance/fixtures/ml_parser_html_parser_spec.json index 3a8800645..440d49118 100644 --- a/crates/angular_conformance/fixtures/ml_parser_html_parser_spec.json +++ b/crates/angular_conformance/fixtures/ml_parser_html_parser_spec.json @@ -1,6 +1,6 @@ { "name": "html_parser_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/ml_parser/html_parser_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/ml_parser/html_parser_spec.ts", "test_groups": [ { "name": "HtmlParser", @@ -90,6 +90,28 @@ } ] }, + { + "name": "should parse named HTML entities containing digits", + "path": "HtmlParser/parse/text nodes/should parse named HTML entities containing digits", + "assertions": [ + { + "type": "HumanizeDom", + "input": "
¹
", + "expected": [ + ["html.Element", "div", 0.0], + ["html.Text", "¹", 1.0, [""], ["¹", "¹"], [""]] + ] + }, + { + "type": "HumanizeDom", + "input": "
½
", + "expected": [ + ["html.Element", "div", 0.0], + ["html.Text", "½", 1.0, [""], ["½", "½"], [""]] + ] + } + ] + }, { "name": "should normalize line endings within CDATA", "path": "HtmlParser/parse/text nodes/should normalize line endings within CDATA", @@ -605,32 +627,6 @@ } ] }, - { - "name": "should parse attributes containing unquoted interpolation", - "path": "HtmlParser/parse/attributes/should parse attributes containing unquoted interpolation", - "assertions": [ - { - "type": "HumanizeDom", - "input": "
", - "expected": [ - ["html.Element", "div", 0.0], - [ - "html.Attribute", - "foo", - "{{message}}", - [""], - ["{{", "message", "}}"], - [""] - ] - ] - } - ] - }, - { - "name": "should parse bound inputs with expressions containing newlines", - "path": "HtmlParser/parse/attributes/should parse bound inputs with expressions containing newlines", - "assertions": [] - }, { "name": "should decode HTML entities in interpolated attributes", "path": "HtmlParser/parse/attributes/should decode HTML entities in interpolated attributes", @@ -770,8 +766,8 @@ "groups": [], "tests": [ { - "name": "should parse out expansion forms", - "path": "HtmlParser/parse/expansion forms/should parse out expansion forms", + "name": "should parse out expansion forms (with multiple cases)", + "path": "HtmlParser/parse/expansion forms/should parse out expansion forms (with multiple cases)", "assertions": [] }, { @@ -790,8 +786,8 @@ "assertions": [] }, { - "name": "should not normalize line-endings in ICU expressions in external templates when `i18nNormalizeLineEndingsInICUs` is not set", - "path": "HtmlParser/parse/expansion forms/should not normalize line-endings in ICU expressions in external templates when `i18nNormalizeLineEndingsInICUs` is not set", + "name": "should not normalize line-endings in ICU expressions in external templates when `i18nNormalizeLineEndingsInICUs` is not set (escapedString:false)", + "path": "HtmlParser/parse/expansion forms/should not normalize line-endings in ICU expressions in external templates when `i18nNormalizeLineEndingsInICUs` is not set (escapedString:false)", "assertions": [] }, { @@ -981,6 +977,24 @@ } ] }, + { + "name": "should parse exhaustive default checks in a switch block", + "path": "HtmlParser/parse/blocks/should parse exhaustive default checks in a switch block", + "assertions": [ + { + "type": "HumanizeDom", + "input": "@switch (expr) {@case ('foo') {} @default never;}", + "expected": [ + ["html.Block", "switch", 0.0], + ["html.BlockParameter", "expr"], + ["html.Block", "case", 1.0], + ["html.BlockParameter", "'foo'"], + ["html.Text", " ", 1.0, [" "]], + ["html.Block", "default never", 1.0] + ] + } + ] + }, { "name": "should close void elements used right before a block", "path": "HtmlParser/parse/blocks/should close void elements used right before a block", @@ -1032,8 +1046,8 @@ "assertions": [] }, { - "name": "should parse an incomplete block with no parameters", - "path": "HtmlParser/parse/blocks/should parse an incomplete block with no parameters", + "name": "should parse an incomplete block with no body", + "path": "HtmlParser/parse/blocks/should parse an incomplete block with no body", "assertions": [] } ] @@ -1081,7 +1095,7 @@ "html.LetDeclaration", "foo", "123 + 456", - "@let foo = 123 + 456", + "@let foo = 123 + 456;", "foo", "123 + 456" ] diff --git a/crates/angular_conformance/fixtures/ml_parser_html_whitespaces_spec.json b/crates/angular_conformance/fixtures/ml_parser_html_whitespaces_spec.json index 90e5919eb..5a3474cdb 100644 --- a/crates/angular_conformance/fixtures/ml_parser_html_whitespaces_spec.json +++ b/crates/angular_conformance/fixtures/ml_parser_html_whitespaces_spec.json @@ -1,6 +1,6 @@ { "name": "html_whitespaces_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/ml_parser/html_whitespaces_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/ml_parser/html_whitespaces_spec.ts", "test_groups": [ { "name": "removeWhitespaces", diff --git a/crates/angular_conformance/fixtures/ml_parser_inline_comment_spec.json b/crates/angular_conformance/fixtures/ml_parser_inline_comment_spec.json new file mode 100644 index 000000000..9bb14e721 --- /dev/null +++ b/crates/angular_conformance/fixtures/ml_parser_inline_comment_spec.json @@ -0,0 +1,57 @@ +{ + "name": "inline_comment_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/ml_parser/inline_comment_spec.ts", + "test_groups": [ + { + "name": "Inline comments in attributes", + "groups": [], + "tests": [ + { + "name": "should ignore single line comments between attributes", + "path": "Inline comments in attributes/should ignore single line comments between attributes", + "assertions": [] + }, + { + "name": "should ignore single line comments between inputs and outputs", + "path": "Inline comments in attributes/should ignore single line comments between inputs and outputs", + "assertions": [] + }, + { + "name": "should ignore single line comments at the end of tag", + "path": "Inline comments in attributes/should ignore single line comments at the end of tag", + "assertions": [] + }, + { + "name": "should handle commented out attribute", + "path": "Inline comments in attributes/should handle commented out attribute", + "assertions": [] + }, + { + "name": "should comment an attribute with a // on a new line", + "path": "Inline comments in attributes/should comment an attribute with a // on a new line", + "assertions": [] + }, + { + "name": "should ignore multi-line comments between attributes", + "path": "Inline comments in attributes/should ignore multi-line comments between attributes", + "assertions": [] + }, + { + "name": "should ignore multi-line comments at the end of tag", + "path": "Inline comments in attributes/should ignore multi-line comments at the end of tag", + "assertions": [] + }, + { + "name": "should handle * inside multi-line comments", + "path": "Inline comments in attributes/should handle * inside multi-line comments", + "assertions": [] + }, + { + "name": "should maintain correct source spans with comments", + "path": "Inline comments in attributes/should maintain correct source spans with comments", + "assertions": [] + } + ] + } + ] +} diff --git a/crates/angular_conformance/fixtures/ml_parser_lexer_spec.json b/crates/angular_conformance/fixtures/ml_parser_lexer_spec.json index e31eb2f97..8a0daaa99 100644 --- a/crates/angular_conformance/fixtures/ml_parser_lexer_spec.json +++ b/crates/angular_conformance/fixtures/ml_parser_lexer_spec.json @@ -1,6 +1,6 @@ { "name": "lexer_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/ml_parser/lexer_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/ml_parser/lexer_spec.ts", "test_groups": [ { "name": "HtmlLexer", @@ -961,8 +961,8 @@ "assertions": [] }, { - "name": "should not normalize line-endings in ICU expressions when `i18nNormalizeLineEndingsInICUs` is not defined", - "path": "HtmlLexer/open tags/expansion forms/[line ending normalization/{escapedString: false}/should not normalize line-endings in ICU expressions when `i18nNormalizeLineEndingsInICUs` is not defined", + "name": "should not normalize line-endings in ICU expressions when `i18nNormalizeLineEndingsInICUs` is not defined (escapedString:false)", + "path": "HtmlLexer/open tags/expansion forms/[line ending normalization/{escapedString: false}/should not normalize line-endings in ICU expressions when `i18nNormalizeLineEndingsInICUs` is not defined (escapedString:false)", "assertions": [] }, { @@ -2715,30 +2715,6 @@ } ] }, - { - "name": "should parse bound inputs with expressions containing newlines", - "path": "HtmlLexer/attributes/should parse bound inputs with expressions containing newlines", - "assertions": [ - { - "type": "HtmlLexerTest", - "input": "", - "test_type": "HumanizeParts", - "expected": [ - ["TokenType.TAG_OPEN_START", "", "app-component"], - ["TokenType.ATTR_NAME", "", "[attr]"], - ["TokenType.ATTR_QUOTE", "\""], - [ - "TokenType.ATTR_VALUE_TEXT", - "[\n {text: 'some text',url:'//www.google.com'},\n {text:'other text',url:'//www.google.com'}]" - ], - ["TokenType.ATTR_QUOTE", "\""], - ["TokenType.TAG_OPEN_END"], - ["TokenType.EOF"] - ], - "options": null - } - ] - }, { "name": "should allow whitespace", "path": "HtmlLexer/attributes/should allow whitespace", @@ -3136,6 +3112,48 @@ } ] }, + { + "name": "should parse named entities containing digits", + "path": "HtmlLexer/entities/should parse named entities containing digits", + "assertions": [ + { + "type": "HtmlLexerTest", + "input": "¹", + "test_type": "HumanizeParts", + "expected": [ + ["TokenType.TEXT", ""], + ["TokenType.ENCODED_ENTITY", "¹", "¹"], + ["TokenType.TEXT", ""], + ["TokenType.EOF"] + ], + "options": null + }, + { + "type": "HtmlLexerTest", + "input": "½", + "test_type": "HumanizeParts", + "expected": [ + ["TokenType.TEXT", ""], + ["TokenType.ENCODED_ENTITY", "½", "½"], + ["TokenType.TEXT", ""], + ["TokenType.EOF"] + ], + "options": null + }, + { + "type": "HtmlLexerTest", + "input": "▓", + "test_type": "HumanizeParts", + "expected": [ + ["TokenType.TEXT", ""], + ["TokenType.ENCODED_ENTITY", "▓", "▓"], + ["TokenType.TEXT", ""], + ["TokenType.EOF"] + ], + "options": null + } + ] + }, { "name": "should parse hexadecimal entities", "path": "HtmlLexer/entities/should parse hexadecimal entities", @@ -4055,8 +4073,8 @@ "assertions": [] }, { - "name": "should not normalize line-endings in ICU expressions when `i18nNormalizeLineEndingsInICUs` is not defined", - "path": "HtmlLexer/expansion forms/[line ending normalization/{escapedString: false}/should not normalize line-endings in ICU expressions when `i18nNormalizeLineEndingsInICUs` is not defined", + "name": "should not normalize line-endings in ICU expressions when `i18nNormalizeLineEndingsInICUs` is not defined (escapeString: false)", + "path": "HtmlLexer/expansion forms/[line ending normalization/{escapedString: false}/should not normalize line-endings in ICU expressions when `i18nNormalizeLineEndingsInICUs` is not defined (escapeString: false)", "assertions": [] }, { @@ -5010,6 +5028,61 @@ } ] }, + { + "name": "should parse @default never;", + "path": "HtmlLexer/blocks/should parse @default never;", + "assertions": [ + { + "type": "HtmlLexerTest", + "input": "@default never;", + "test_type": "HumanizeParts", + "expected": [ + ["TokenType.BLOCK_OPEN_START", "default never"], + ["TokenType.BLOCK_OPEN_END"], + ["TokenType.BLOCK_CLOSE"], + ["TokenType.EOF"] + ], + "options": null + } + ] + }, + { + "name": "should parse @default never(expr);", + "path": "HtmlLexer/blocks/should parse @default never(expr);", + "assertions": [ + { + "type": "HtmlLexerTest", + "input": "@default never(expr);", + "test_type": "HumanizeParts", + "expected": [ + ["TokenType.BLOCK_OPEN_START", "default never"], + ["TokenType.BLOCK_PARAMETER", "expr"], + ["TokenType.BLOCK_OPEN_END"], + ["TokenType.BLOCK_CLOSE"], + ["TokenType.EOF"] + ], + "options": null + } + ] + }, + { + "name": "should parse @default never ;", + "path": "HtmlLexer/blocks/should parse @default never ;", + "assertions": [ + { + "type": "HtmlLexerTest", + "input": "@default never ;", + "test_type": "HumanizeParts", + "expected": [ + ["TokenType.BLOCK_OPEN_START", "default never"], + ["TokenType.BLOCK_OPEN_END"], + ["TokenType.BLOCK_CLOSE"], + ["TokenType.EOF"] + ], + "options": null + } + ] + }, { "name": "should parse a block with parameters", "path": "HtmlLexer/blocks/should parse a block with parameters", diff --git a/crates/angular_conformance/fixtures/output_abstract_emitter_node_only_spec.json b/crates/angular_conformance/fixtures/output_abstract_emitter_node_only_spec.json index 51ccdc4b7..95cc8ad34 100644 --- a/crates/angular_conformance/fixtures/output_abstract_emitter_node_only_spec.json +++ b/crates/angular_conformance/fixtures/output_abstract_emitter_node_only_spec.json @@ -1,9 +1,9 @@ { "name": "abstract_emitter_node_only_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/output/abstract_emitter_node_only_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/output/abstract_emitter_node_only_spec.ts", "test_groups": [ { - "name": "AbstractEmitter", + "name": "AbstractEmitter (node only)", "groups": [ { "name": "EmitterVisitorContext", @@ -11,42 +11,42 @@ "tests": [ { "name": "should add source files to the source map", - "path": "AbstractEmitter/EmitterVisitorContext/should add source files to the source map", + "path": "AbstractEmitter (node only)/EmitterVisitorContext/should add source files to the source map", "assertions": [] }, { "name": "should generate a valid mapping", - "path": "AbstractEmitter/EmitterVisitorContext/should generate a valid mapping", + "path": "AbstractEmitter (node only)/EmitterVisitorContext/should generate a valid mapping", "assertions": [] }, { "name": "should be able to shift the content", - "path": "AbstractEmitter/EmitterVisitorContext/should be able to shift the content", + "path": "AbstractEmitter (node only)/EmitterVisitorContext/should be able to shift the content", "assertions": [] }, { "name": "should use the default source file for the first character", - "path": "AbstractEmitter/EmitterVisitorContext/should use the default source file for the first character", + "path": "AbstractEmitter (node only)/EmitterVisitorContext/should use the default source file for the first character", "assertions": [] }, { "name": "should use an explicit mapping for the first character", - "path": "AbstractEmitter/EmitterVisitorContext/should use an explicit mapping for the first character", + "path": "AbstractEmitter (node only)/EmitterVisitorContext/should use an explicit mapping for the first character", "assertions": [] }, { "name": "should map leading segment without span", - "path": "AbstractEmitter/EmitterVisitorContext/should map leading segment without span", + "path": "AbstractEmitter (node only)/EmitterVisitorContext/should map leading segment without span", "assertions": [] }, { "name": "should handle indent", - "path": "AbstractEmitter/EmitterVisitorContext/should handle indent", + "path": "AbstractEmitter (node only)/EmitterVisitorContext/should handle indent", "assertions": [] }, { "name": "should coalesce identical span", - "path": "AbstractEmitter/EmitterVisitorContext/should coalesce identical span", + "path": "AbstractEmitter (node only)/EmitterVisitorContext/should coalesce identical span", "assertions": [] } ] diff --git a/crates/angular_conformance/fixtures/output_abstract_emitter_spec.json b/crates/angular_conformance/fixtures/output_abstract_emitter_spec.json index 8e1a4152c..469188113 100644 --- a/crates/angular_conformance/fixtures/output_abstract_emitter_spec.json +++ b/crates/angular_conformance/fixtures/output_abstract_emitter_spec.json @@ -1,6 +1,6 @@ { "name": "abstract_emitter_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/output/abstract_emitter_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/output/abstract_emitter_spec.ts", "test_groups": [ { "name": "AbstractEmitter", @@ -29,16 +29,6 @@ "path": "AbstractEmitter/escapeIdentifier/should escape carriage returns", "assertions": [] }, - { - "name": "should escape $", - "path": "AbstractEmitter/escapeIdentifier/should escape $", - "assertions": [] - }, - { - "name": "should not escape $", - "path": "AbstractEmitter/escapeIdentifier/should not escape $", - "assertions": [] - }, { "name": "should add quotes for non-identifiers", "path": "AbstractEmitter/escapeIdentifier/should add quotes for non-identifiers", diff --git a/crates/angular_conformance/fixtures/output_output_jit_spec.json b/crates/angular_conformance/fixtures/output_output_jit_spec.json index 3fe4a45b2..bd1d74fb0 100644 --- a/crates/angular_conformance/fixtures/output_output_jit_spec.json +++ b/crates/angular_conformance/fixtures/output_output_jit_spec.json @@ -1,6 +1,6 @@ { "name": "output_jit_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/output/output_jit_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/output/output_jit_spec.ts", "test_groups": [ { "name": "Output JIT", diff --git a/crates/angular_conformance/fixtures/output_source_map_spec.json b/crates/angular_conformance/fixtures/output_source_map_spec.json index 78fe394f9..b3764e93a 100644 --- a/crates/angular_conformance/fixtures/output_source_map_spec.json +++ b/crates/angular_conformance/fixtures/output_source_map_spec.json @@ -1,6 +1,6 @@ { "name": "source_map_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/output/source_map_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/output/source_map_spec.ts", "test_groups": [ { "name": "source map generation", diff --git a/crates/angular_conformance/fixtures/render3_r3_ast_absolute_span_spec.json b/crates/angular_conformance/fixtures/render3_r3_ast_absolute_span_spec.json index bb0dcdb0a..e55dbaee9 100644 --- a/crates/angular_conformance/fixtures/render3_r3_ast_absolute_span_spec.json +++ b/crates/angular_conformance/fixtures/render3_r3_ast_absolute_span_spec.json @@ -1,6 +1,6 @@ { "name": "r3_ast_absolute_span_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/render3/r3_ast_absolute_span_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/render3/r3_ast_absolute_span_spec.ts", "test_groups": [ { "name": "expression AST absolute source spans", @@ -837,8 +837,8 @@ "assertions": [] }, { - "name": "is correct for variables and placeholders", - "path": "expression AST absolute source spans/ICU expressions/is correct for variables and placeholders", + "name": "is correct for variables and placeholders in nested ICUs", + "path": "expression AST absolute source spans/ICU expressions/is correct for variables and placeholders in nested ICUs", "assertions": [] } ] diff --git a/crates/angular_conformance/fixtures/render3_r3_ast_spans_spec.json b/crates/angular_conformance/fixtures/render3_r3_ast_spans_spec.json index 1793f7c79..1a84935d1 100644 --- a/crates/angular_conformance/fixtures/render3_r3_ast_spans_spec.json +++ b/crates/angular_conformance/fixtures/render3_r3_ast_spans_spec.json @@ -1,6 +1,6 @@ { "name": "r3_ast_spans_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/render3/r3_ast_spans_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/render3/r3_ast_spans_spec.ts", "test_groups": [ { "name": "R3 AST source spans", @@ -164,7 +164,7 @@ "
", "
" ], - ["BoundAttribute", "data-prop=\"{{v}}\"", "prop", "{{v}}"] + ["BoundAttribute", "data-prop=\"{{v}}\"", "data-prop", "{{v}}"] ], "ignore_error": false } @@ -332,8 +332,8 @@ ] }, { - "name": "is correct for reference via data-ref-...", - "path": "R3 AST source spans/templates/is correct for reference via data-ref-...", + "name": "is correct for data-ref-... attribute", + "path": "R3 AST source spans/templates/is correct for data-ref-... attribute", "assertions": [ { "type": "ExpectFromHtml", @@ -345,7 +345,7 @@ "", "" ], - ["Reference", "data-ref-a", "a", ""] + ["TextAttribute", "data-ref-a", "data-ref-a", ""] ], "ignore_error": false } @@ -372,8 +372,8 @@ ] }, { - "name": "is correct for variables via data-let-...", - "path": "R3 AST source spans/templates/is correct for variables via data-let-...", + "name": "is correct for data-let-... attribute", + "path": "R3 AST source spans/templates/is correct for data-let-... attribute", "assertions": [ { "type": "ExpectFromHtml", @@ -385,7 +385,7 @@ "", "" ], - ["Variable", "data-let-a=\"b\"", "a", "b"] + ["TextAttribute", "data-let-a=\"b\"", "data-let-a", "b"] ], "ignore_error": false } @@ -605,8 +605,8 @@ ] }, { - "name": "is correct for bound events via data-on-", - "path": "R3 AST source spans/events/is correct for bound events via data-on-", + "name": "is correct for text attribute via data-on-", + "path": "R3 AST source spans/events/is correct for text attribute via data-on-", "assertions": [ { "type": "ExpectFromHtml", @@ -618,7 +618,7 @@ "
", "
" ], - ["BoundEvent", "data-on-event=\"v\"", "event", "v"] + ["TextAttribute", "data-on-event=\"v\"", "data-on-event", "v"] ], "ignore_error": false } @@ -662,8 +662,8 @@ ] }, { - "name": "is correct for bound events and properties via data-bindon-", - "path": "R3 AST source spans/events/is correct for bound events and properties via data-bindon-", + "name": "is correct for TextAttribute and properties via data-bindon-", + "path": "R3 AST source spans/events/is correct for TextAttribute and properties via data-bindon-", "assertions": [ { "type": "ExpectFromHtml", @@ -675,8 +675,7 @@ "
", "
" ], - ["BoundAttribute", "data-bindon-prop=\"v\"", "prop", "v"], - ["BoundEvent", "data-bindon-prop=\"v\"", "prop", "v"] + ["TextAttribute", "data-bindon-prop=\"v\"", "data-bindon-prop", "v"] ], "ignore_error": false } @@ -752,21 +751,6 @@ "ignore_error": false } ] - }, - { - "name": "is correct for references via data-ref-", - "path": "R3 AST source spans/references/is correct for references via data-ref-", - "assertions": [ - { - "type": "ExpectFromHtml", - "input": "
", - "expected": [ - ["Element", "
", "
", "
"], - ["Reference", "ref-a", "a", ""] - ], - "ignore_error": false - } - ] } ] }, @@ -949,6 +933,29 @@ "ignore_error": false } ] + }, + { + "name": "is correct for switch blocks with exhaustive checking", + "path": "R3 AST source spans/switch blocks/is correct for switch blocks with exhaustive checking", + "assertions": [ + { + "type": "ExpectFromHtml", + "input": "@switch (cond.kind) {@case (x()) {X case}@default never;}", + "expected": [ + [ + "SwitchBlock", + "@switch (cond.kind) {@case (x()) {X case}@default never;}", + "@switch (cond.kind) {", + "}" + ], + ["SwitchBlockCaseGroup", "@case (x()) {X case}", "@case (x()) {"], + ["SwitchBlockCase", "@case (x()) {X case}", "@case (x()) {"], + ["Text", "X case"], + ["SwitchExhaustiveCheck", "@default never;", "@default never;"] + ], + "ignore_error": false + } + ] } ] }, @@ -1041,7 +1048,7 @@ { "type": "ExpectFromHtml", "input": "@let foo = 123;", - "expected": [["LetDeclaration", "@let foo = 123", "foo", "123"]], + "expected": [["LetDeclaration", "@let foo = 123;", "foo", "123"]], "ignore_error": false } ] diff --git a/crates/angular_conformance/fixtures/render3_r3_ast_visitor_spec.json b/crates/angular_conformance/fixtures/render3_r3_ast_visitor_spec.json new file mode 100644 index 000000000..cea650a33 --- /dev/null +++ b/crates/angular_conformance/fixtures/render3_r3_ast_visitor_spec.json @@ -0,0 +1,17 @@ +{ + "name": "r3_ast_visitor_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/render3/r3_ast_visitor_spec.ts", + "test_groups": [ + { + "name": "RecursiveVisitor", + "groups": [], + "tests": [ + { + "name": "should not mutate IfBlockBranch children when visiting", + "path": "RecursiveVisitor/should not mutate IfBlockBranch children when visiting", + "assertions": [] + } + ] + } + ] +} diff --git a/crates/angular_conformance/fixtures/render3_r3_template_transform_spec.json b/crates/angular_conformance/fixtures/render3_r3_template_transform_spec.json index 14f06f3e8..c1794704f 100644 --- a/crates/angular_conformance/fixtures/render3_r3_template_transform_spec.json +++ b/crates/angular_conformance/fixtures/render3_r3_template_transform_spec.json @@ -1,6 +1,6 @@ { "name": "r3_template_transform_spec.ts", - "file_path": "/Users/brooklyn/workspace/github/oxc/crates/oxc_angular_compiler/angular/packages/compiler/test/render3/r3_template_transform_spec.ts", + "file_path": "crates/oxc_angular_compiler/angular/packages/compiler/test/render3/r3_template_transform_spec.ts", "test_groups": [ { "name": "R3 template transform", @@ -943,12 +943,12 @@ ] }, { - "name": "Ignored elements", + "name": "