@@ -168,6 +168,22 @@ const getValueType = ({ property, propertyMap }) => {
168
168
}
169
169
}
170
170
171
+ /**
172
+ * @param {Set<string> } groups
173
+ * @param {ObjectExpression } vueNodeMap
174
+ * @param {PropertyMap } propertyMap
175
+ */
176
+ const addPropertyMap = ( groups , vueNodeMap , propertyMap ) => {
177
+ const properties = utils . iterateProperties ( vueNodeMap , groups )
178
+ for ( const property of properties ) {
179
+ propertyMap [ property . name ] = {
180
+ ...propertyMap [ property . name ] ,
181
+ ...property ,
182
+ valueType : getValueType ( { property, propertyMap } )
183
+ }
184
+ }
185
+ }
186
+
171
187
module . exports = {
172
188
meta : {
173
189
type : 'problem' ,
@@ -208,24 +224,10 @@ module.exports = {
208
224
}
209
225
} ,
210
226
211
- /**
212
- * Re-check propertyMap's valueType.
213
- * Because there is a possibility that propertyMap's member reference other propertyMap's member.
214
- */
215
- 'MemberExpression[object.type="ThisExpression"]' ( node ) {
216
- const properties = utils . iterateProperties ( vueNodeMap , groups )
217
-
218
- for ( const property of properties ) {
219
- propertyMap [ property . name ] = {
220
- ...propertyMap [ property . name ] ,
221
- ...property ,
222
- valueType : getValueType ( { property, propertyMap } )
223
- }
224
- }
225
- } ,
226
-
227
227
/** @param {ThisExpression } node */
228
228
'CallExpression > MemberExpression > ThisExpression' ( node ) {
229
+ addPropertyMap ( groups , vueNodeMap , propertyMap )
230
+
229
231
if ( node . parent . type !== 'MemberExpression' ) return
230
232
if ( node . parent . property . type !== 'Identifier' ) return
231
233
0 commit comments