File tree Expand file tree Collapse file tree 1 file changed +23
-0
lines changed Expand file tree Collapse file tree 1 file changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -6,6 +6,10 @@ import {
6
6
setClassicDecorator ,
7
7
} from '@ember/-internals/metal' ;
8
8
import type { ElementDescriptor } from '@ember/-internals/metal' ;
9
+ import {
10
+ identifyModernDecoratorArgs ,
11
+ isModernDecoratorArgs ,
12
+ } from '@ember/-internals/metal/lib/decorator-util' ;
9
13
import { assert } from '@ember/debug' ;
10
14
import type { UpdatableTag } from '@glimmer/validator' ;
11
15
import { consumeTag , tagFor , track , updateTag } from '@glimmer/validator' ;
@@ -139,6 +143,25 @@ export function dependentKeyCompat(
139
143
) ;
140
144
141
145
return wrapGetterSetter ( target , key , desc ) ;
146
+ } else if ( isModernDecoratorArgs ( args ) ) {
147
+ const dec = identifyModernDecoratorArgs ( args ) ;
148
+ assert (
149
+ 'The @dependentKeyCompat decorator must be applied to getters/setters when used in native classes' ,
150
+ dec . kind === 'getter'
151
+ ) ;
152
+ return function ( this : any ) {
153
+ let propertyTag = tagFor ( this , dec . context . name as string ) as UpdatableTag ;
154
+ let ret ;
155
+
156
+ let tag = track ( ( ) => {
157
+ ret = dec . value . call ( this ) ;
158
+ } ) ;
159
+
160
+ updateTag ( propertyTag , tag ) ;
161
+ consumeTag ( tag ) ;
162
+
163
+ return ret ;
164
+ } ;
142
165
} else {
143
166
const desc = args [ 0 ] ;
144
167
You can’t perform that action at this time.
0 commit comments