@@ -178,7 +178,7 @@ fun buildLookupElementHelper(
178178
179179private fun toGetStylesheetFile (ref : PsiReference ? ): StylesheetFile ? {
180180 // 增强解析逻辑:支持直接 resolve 到 StylesheetFile、PsiFile,或 ES6ImportedBinding,
181- // 并尝试沿引用链继续解析,提升命中率和鲁棒性 。
181+ // 并尝试沿引用链继续解析,提升命中率��鲁棒性 。
182182 val resolved = ref?.resolve() ? : return null
183183 return when (resolved) {
184184 is StylesheetFile -> resolved
@@ -191,26 +191,17 @@ private fun toGetStylesheetFile(ref: PsiReference?): StylesheetFile? {
191191 }
192192}
193193
194- fun resolveStylesheetFromReference (element : PsiElement ? ): StylesheetFile ? {
195- if (element == null ) return null
196-
197- // 字符串字面量的情况:查找最近的引用表达式(支持多种父级结构)
198- if (element is JSLiteralExpression ) {
199- // 优先查找索引访问 foo["bar"] 的首子表达式
200- val indexed = PsiTreeUtil .getParentOfType(element, JSIndexedPropertyAccessExpression ::class .java)
201- val candidateRef = (indexed?.firstChild as ? JSReferenceExpression )
202- // 否则向上查找通用的 JSReferenceExpression(例如 foo.bar 或 更复杂结构)
203- ? : PsiTreeUtil .getParentOfType(element, JSReferenceExpression ::class .java)
204-
205- return toGetStylesheetFile(candidateRef?.reference)
206- }
207-
208- // 直接是引用表达式:优先用自身的 reference,再退回到 firstChild 的 reference(兼容旧逻辑)
209- if (element is JSReferenceExpression ) {
210- return toGetStylesheetFile(element.reference ? : element.firstChild?.reference)
194+ fun resolveStylesheetFromReference (element : PsiElement ? ): StylesheetFile ? = element?.let {
195+ when (it) {
196+ is JSLiteralExpression -> {
197+ val indexed = PsiTreeUtil .getParentOfType(it, JSIndexedPropertyAccessExpression ::class .java)
198+ val candidateRef = (indexed?.firstChild as ? JSReferenceExpression )
199+ ? : PsiTreeUtil .getParentOfType(it, JSReferenceExpression ::class .java)
200+ toGetStylesheetFile(candidateRef?.reference)
201+ }
202+ is JSReferenceExpression -> toGetStylesheetFile(it.reference ? : it.firstChild?.reference)
203+ else -> null
211204 }
212-
213- return null
214205}
215206
216207/* *
0 commit comments