From d10f7fbdbfcacd8c6624e0e028ea1be94899ff10 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 10 Dec 2017 10:06:30 -0500 Subject: [PATCH] don't add event to expectedProperties - fixes #972 --- src/generators/Generator.ts | 24 +++++++++++-------- .../_config.js | 5 ++++ .../main.html | 1 + 3 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 test/runtime/samples/dev-warning-missing-data-excludes-event/_config.js create mode 100644 test/runtime/samples/dev-warning-missing-data-excludes-event/main.html diff --git a/src/generators/Generator.ts b/src/generators/Generator.ts index 2285c1185b..5ecb021d73 100644 --- a/src/generators/Generator.ts +++ b/src/generators/Generator.ts @@ -645,7 +645,11 @@ export default class Generator { } = this; const { html } = this.parsed; - const contextualise = (node: Node, contextDependencies: Map, indexes: Set) => { + const contextualise = ( + node: Node, contextDependencies: Map, + indexes: Set, + isEventHandler: boolean + ) => { this.addSourcemapLocations(node); // TODO this involves an additional walk — can we roll it in somewhere else? let scope = annotateWithScopes(node); @@ -663,7 +667,7 @@ export default class Generator { if (isReference(node, parent)) { const { name } = flattenReference(node); - if (scope && scope.has(name) || helpers.has(name)) return; + if (scope && scope.has(name) || helpers.has(name) || (name === 'event' && isEventHandler)) return; if (contextDependencies.has(name)) { contextDependencies.get(name).forEach(dependency => { @@ -728,7 +732,7 @@ export default class Generator { } if (node.type === 'EachBlock') { - node.metadata = contextualise(node.expression, contextDependencies, indexes); + node.metadata = contextualise(node.expression, contextDependencies, indexes, false); contextDependencies = new Map(contextDependencies); contextDependencies.set(node.context, node.metadata.dependencies); @@ -752,7 +756,7 @@ export default class Generator { } if (node.type === 'AwaitBlock') { - node.metadata = contextualise(node.expression, contextDependencies, indexes); + node.metadata = contextualise(node.expression, contextDependencies, indexes, false); contextDependencies = new Map(contextDependencies); contextDependencies.set(node.value, node.metadata.dependencies); @@ -762,33 +766,33 @@ export default class Generator { } if (node.type === 'IfBlock') { - node.metadata = contextualise(node.expression, contextDependencies, indexes); + node.metadata = contextualise(node.expression, contextDependencies, indexes, false); } if (node.type === 'MustacheTag' || node.type === 'RawMustacheTag' || node.type === 'AttributeShorthand') { - node.metadata = contextualise(node.expression, contextDependencies, indexes); + node.metadata = contextualise(node.expression, contextDependencies, indexes, false); this.skip(); } if (node.type === 'Binding') { - node.metadata = contextualise(node.value, contextDependencies, indexes); + node.metadata = contextualise(node.value, contextDependencies, indexes, false); this.skip(); } if (node.type === 'EventHandler' && node.expression) { node.expression.arguments.forEach((arg: Node) => { - arg.metadata = contextualise(arg, contextDependencies, indexes); + arg.metadata = contextualise(arg, contextDependencies, indexes, true); }); this.skip(); } if (node.type === 'Transition' && node.expression) { - node.metadata = contextualise(node.expression, contextDependencies, indexes); + node.metadata = contextualise(node.expression, contextDependencies, indexes, false); this.skip(); } if (node.type === 'Component' && node.name === ':Component') { - node.metadata = contextualise(node.expression, contextDependencies, indexes); + node.metadata = contextualise(node.expression, contextDependencies, indexes, false); } }, diff --git a/test/runtime/samples/dev-warning-missing-data-excludes-event/_config.js b/test/runtime/samples/dev-warning-missing-data-excludes-event/_config.js new file mode 100644 index 0000000000..3e9f7fd6f7 --- /dev/null +++ b/test/runtime/samples/dev-warning-missing-data-excludes-event/_config.js @@ -0,0 +1,5 @@ +export default { + dev: true, + + warnings: [] +}; diff --git a/test/runtime/samples/dev-warning-missing-data-excludes-event/main.html b/test/runtime/samples/dev-warning-missing-data-excludes-event/main.html new file mode 100644 index 0000000000..ae30c7f05d --- /dev/null +++ b/test/runtime/samples/dev-warning-missing-data-excludes-event/main.html @@ -0,0 +1 @@ +