Skip to content

Commit 1c9f0e6

Browse files
committed
resolve: require quotes in alias
1 parent 7a063b3 commit 1c9f0e6

File tree

6 files changed

+24
-23
lines changed

6 files changed

+24
-23
lines changed

src/lang/clojure-psi-fileimpl.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -666,9 +666,15 @@ private class NSReader(val helper: RoleHelper) {
666666
val iterator = content.iterator()
667667
val aliasSym = iterator.safeNext() as? CSymbol ?: return emptyList()
668668
val nsSym = iterator.safeNext() as? CSymbol
669-
val namespace = nsSym?.name ?: ""
670-
setResolveTo(aliasSym, SymKey(aliasSym.name, namespace, "alias"))
671-
setResolveTo(nsSym, SymKey(namespace, "", "ns"))
669+
val aliasQuoted = aliasSym.fastFlags and FLAG_QUOTED != 0
670+
val nsQuoted = nsSym.fastFlags and FLAG_QUOTED != 0
671+
val namespace = if (nsQuoted) nsSym?.name ?: "" else ""
672+
if (aliasQuoted) {
673+
setResolveTo(aliasSym, SymKey(aliasSym.name, namespace, "alias"))
674+
}
675+
if (nsQuoted) {
676+
setResolveTo(nsSym, SymKey(namespace, "", "ns"))
677+
}
672678
return listOf(Import("alias", namespace, aliasSym.name, aliasSym))
673679
}
674680

testData/highlighting/ClojureFixes.clj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
(defn allow-forward-decl-in-spec)
7979
)
8080
(do
81-
(alias 'clojure.set-alias clojure.set)
81+
(alias 'clojure.set-alias 'clojure.set)
8282
(defn no-resolve-to-alias [] [<warning>clojure.set-alias</warning> clojure.set-alias/union])
8383
)
8484

@@ -140,6 +140,7 @@
140140
(-> (Object.) .getClass .getName))
141141

142142
(do
143-
(alias buz 'clojure.set)
144-
(alias bar.buz 'clojure.core)
143+
(alias <warning>bar</warning> <warning>clojure.set</warning>)
144+
(alias 'buz 'clojure.set)
145+
(alias 'bar.buz 'clojure.core)
145146
(buz/union))

testData/highlighting/ClojureLang.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,4 +184,4 @@
184184
/clojure/walk.clj 0 errors, 0 warnings, 0 dynamic
185185
/clojure/xml.clj 0 errors, 0 warnings, 0 dynamic
186186
/clojure/zip.clj 0 errors, 0 warnings, 0 dynamic
187-
Total: 66 warnings, 77 dynamic in 43 files (757.47 kB)
187+
Total: 66 warnings, 77 dynamic in 43 files (757.48 kB)

testData/highlighting/ClojureScript.txt

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@
3838
3124: dynamic 'length'
3939
11602: dynamic 'exists'
4040
12525: dynamic 'exists'
41-
/cljs/closure.clj 0 errors, 9 warnings, 43 dynamic
42-
874: unable to resolve 'clojure.reflect'
41+
/cljs/closure.clj 0 errors, 8 warnings, 43 dynamic
4342
62592: unable to resolve 'read-str'
4443
69334: unable to resolve 'write-str'
4544
75708: unable to resolve 'read-str'
@@ -156,8 +155,7 @@
156155
137090: dynamic 'slice'
157156
141847: dynamic '-cljs$lang$macro'
158157
143846: dynamic '-cljs$lang$macro'
159-
/cljs/core.cljs 0 errors, 20 warnings, 864 dynamic
160-
660: unable to resolve 'goog.Uri'
158+
/cljs/core.cljs 0 errors, 19 warnings, 864 dynamic
161159
33056: unable to resolve 'cljs.core.Var'
162160
62372: unable to resolve 'goog.math.Integer'
163161
62410: unable to resolve 'goog.math.Long'
@@ -813,8 +811,7 @@
813811
6646: unable to resolve 'source-logging-push-back-reader'
814812
/cljs/core/specs/alpha.cljc 0 errors, 1 warnings, 0 dynamic
815813
6567: unable to resolve 'ns-special-form'
816-
/cljs/core/specs/alpha.cljs 0 errors, 1 warnings, 0 dynamic
817-
510: unable to resolve 'cljs.core.specs.alpha'
814+
/cljs/core/specs/alpha.cljs 0 errors, 0 warnings, 0 dynamic
818815
/cljs/env.cljc 0 errors, 0 warnings, 0 dynamic
819816
/cljs/env/macros.clj 0 errors, 0 warnings, 0 dynamic
820817
/cljs/externs.clj 0 errors, 0 warnings, 22 dynamic
@@ -841,8 +838,7 @@
841838
10389: dynamic 'getName'
842839
10592: dynamic 'getName'
843840
/cljs/js.clj 0 errors, 0 warnings, 0 dynamic
844-
/cljs/js.cljs 0 errors, 29 warnings, 47 dynamic
845-
733: unable to resolve 'cljs.spec.alpha'
841+
/cljs/js.cljs 0 errors, 28 warnings, 47 dynamic
846842
2001: unable to resolve 'read'
847843
4412: unable to resolve 'default-compiler-env'
848844
9423: unable to resolve 'default-compiler-env'
@@ -1066,8 +1062,7 @@
10661062
52607: dynamic 'instanceMethod'
10671063
52656: dynamic 'instanceField'
10681064
64988: dynamic 'stack'
1069-
/cljs/repl.cljs 0 errors, 1 warnings, 3 dynamic
1070-
591: unable to resolve 'goog.string.format'
1065+
/cljs/repl.cljs 0 errors, 0 warnings, 3 dynamic
10711066
2861: dynamic 'name'
10721067
/cljs/repl/bootstrap.clj 0 errors, 0 warnings, 11 dynamic
10731068
966: dynamic 'isProvided__'
@@ -1396,8 +1391,7 @@
13961391
4575: dynamic 'open'
13971392
4635: dynamic 'send'
13981393
4806: dynamic 'toLowerCase'
1399-
/clojure/browser/repl.cljs 0 errors, 3 warnings, 83 dynamic
1400-
1341: unable to resolve 'cljs.repl'
1394+
/clojure/browser/repl.cljs 0 errors, 2 warnings, 83 dynamic
14011395
1368: unable to resolve 'HOST'
14021396
1399: unable to resolve 'PORT'
14031397
1772: dynamic 'json/serialize'
@@ -1484,4 +1478,4 @@
14841478
/clojure/zip.cljs 0 errors, 0 warnings, 0 dynamic
14851479
/process/env.cljs 0 errors, 1 warnings, 0 dynamic
14861480
541: unable to resolve 'NODE_ENV'
1487-
Total: 348 warnings, 1651 dynamic in 74 files (1.64 MB)
1481+
Total: 342 warnings, 1651 dynamic in 74 files (1.64 MB)

tests/lang/completion-tests.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import com.intellij.testFramework.fixtures.BasePlatformTestCase
1111
class ClojureCompletionTest : BasePlatformTestCase() {
1212
companion object {
1313
val NS_KEY = "namespace/keyword"
14-
val NS_ALIAS = "(alias 'namespace some-ns)"
15-
val STR_ALIAS = "(alias 'str clojure.string)"
14+
val NS_ALIAS = "(alias 'namespace 'some-ns)"
15+
val STR_ALIAS = "(alias 'str 'clojure.string)"
1616
}
1717

1818
override fun setUp() {

tests/lang/usages-tests.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import junit.framework.TestCase
2424

2525
class ClojureUsagesTest : BasePlatformTestCase() {
2626
companion object {
27-
const val NS_ALIAS = "(alias 'bar foo.bar)"
27+
const val NS_ALIAS = "(alias 'bar 'foo.bar)"
2828
}
2929

3030
fun testKeywordUsages1() = doTest("(let [{:keys [x y]} {:x| 42}] y)", 2)

0 commit comments

Comments
 (0)