(nodes: Node[])
| 814 | } |
| 815 | |
| 816 | private appendDeepSchemaChecks(nodes: Node[]): void { |
| 817 | for (const node of nodes) { |
| 818 | if (!(node instanceof Element || node instanceof Template)) { |
| 819 | continue; |
| 820 | } |
| 821 | |
| 822 | if (node instanceof Element) { |
| 823 | const claimedInputs = new Set<string>(); |
| 824 | let directives = this.tcb.boundTarget.getDirectivesOfNode(node); |
| 825 | |
| 826 | for (const dirNode of node.directives) { |
| 827 | const directiveResults = this.tcb.boundTarget.getDirectivesOfNode(dirNode); |
| 828 | |
| 829 | if (directiveResults !== null && directiveResults.length > 0) { |
| 830 | directives ??= []; |
| 831 | directives.push(...directiveResults); |
| 832 | } |
| 833 | } |
| 834 | |
| 835 | let hasDirectives: boolean; |
| 836 | if (directives === null || directives.length === 0) { |
| 837 | hasDirectives = false; |
| 838 | } else { |
| 839 | hasDirectives = true; |
| 840 | for (const dir of directives) { |
| 841 | for (const propertyName of dir.inputs.propertyNames) { |
| 842 | claimedInputs.add(propertyName); |
| 843 | } |
| 844 | } |
| 845 | } |
| 846 | this.opQueue.push(new TcbDomSchemaCheckerOp(this.tcb, node, !hasDirectives, claimedInputs)); |
| 847 | } |
| 848 | |
| 849 | this.appendDeepSchemaChecks(node.children); |
| 850 | } |
| 851 | } |
| 852 | |
| 853 | private appendIcuExpressions(node: Icu): void { |
| 854 | for (const variable of Object.values(node.vars)) { |
no test coverage detected