Skip to content

Commit

Permalink
fix missing-declaration warning for use:obj.method (#5454)
Browse files Browse the repository at this point in the history
  • Loading branch information
tanhauhau committed Sep 24, 2020
1 parent 4c135b0 commit 6e0cd9b
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 2 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
@@ -1,5 +1,9 @@
# Svelte changelog

## Unreleased

* Fix erroneous `missing-declaration` warning with `use:obj.method` ([#5451](https://github.com/sveltejs/svelte/issues/5451))

## 3.26.0

* Support `use:obj.method` as actions ([#3935](https://github.com/sveltejs/svelte/issues/3935))
Expand Down
5 changes: 3 additions & 2 deletions src/compiler/compile/nodes/Action.ts
Expand Up @@ -11,10 +11,11 @@ export default class Action extends Node {
constructor(component: Component, parent, scope, info) {
super(component, parent, scope, info);

component.warn_if_undefined(info.name, info, scope);
const object = info.name.split('.')[0];
component.warn_if_undefined(object, info, scope);

this.name = info.name;
component.add_reference(info.name.split('.')[0]);
component.add_reference(object);

this.expression = info.expression
? new Expression(component, this, scope, info.expression)
Expand Down
11 changes: 11 additions & 0 deletions test/validator/samples/action-object/input.svelte
@@ -0,0 +1,11 @@
<script>
const obj = {
foo : "bar",
action(element, { leet }) {
element.foo = this.foo + leet;
},
}
</script>

<button use:obj.action={{ leet: 1337 }}>action</button>
<button use:foo.action={{ leet: 1337 }}>action</button>
17 changes: 17 additions & 0 deletions test/validator/samples/action-object/warnings.json
@@ -0,0 +1,17 @@
[
{
"code": "missing-declaration",
"end": {
"character": 217,
"column": 39,
"line": 11
},
"message": "'foo' is not defined",
"pos": 186,
"start": {
"character": 186,
"column": 8,
"line": 11
}
}
]

0 comments on commit 6e0cd9b

Please sign in to comment.