@@ -58,27 +58,37 @@ class EmberModuleReferenceContributor : JSModuleReferenceContributor {
58
58
.flatMap { listOfNotNull(it.findChild(" app" ), it.findChild(" addon" ), it.findChild(" addon-test-support" )) }
59
59
.map { JSExactFileReference (host, TextRange .create(offset, offset + packageName.length), listOf (it.path), null ) }
60
60
61
- val refs = object : FileReferenceSet (importPath, host, offset + packageName.length + 1 , provider, false , true , DialectDetector .JAVASCRIPT_FILE_TYPES_ARRAY ) {
62
- override fun createFileReference (range : TextRange , index : Int , text : String? ): FileReference {
63
- return object : JSModuleReference (text, index, range, this , null , true ) {
64
- override fun innerResolveInContext (referenceText : String , psiFileSystemItem : PsiFileSystemItem , resolveResults : MutableCollection <ResolveResult >? , b : Boolean ) {
65
- super .innerResolveInContext(referenceText, psiFileSystemItem, resolveResults, b)
66
-
67
- // don't suggest the current file, e.g. when navigating from /app to /addon
68
- resolveResults?.removeAll { it.element?.containingFile == host.containingFile }
69
- }
61
+ val refs : FileReferenceSet
62
+ val startInElement = offset + packageName.length + 1
63
+
64
+ try {
65
+ refs = object : FileReferenceSet (importPath, host, startInElement, provider, false , true , DialectDetector .JAVASCRIPT_FILE_TYPES_ARRAY ) {
66
+ override fun createFileReference (range : TextRange , index : Int , text : String? ): FileReference {
67
+ return object : JSModuleReference (text, index, range, this , null , true ) {
68
+ override fun innerResolveInContext (referenceText : String , psiFileSystemItem : PsiFileSystemItem , resolveResults : MutableCollection <ResolveResult >? , b : Boolean ) {
69
+ super .innerResolveInContext(referenceText, psiFileSystemItem, resolveResults, b)
70
+
71
+ // don't suggest the current file, e.g. when navigating from /app to /addon
72
+ resolveResults?.removeAll { it.element?.containingFile == host.containingFile }
73
+ }
70
74
71
- override fun isAllowFolders () = false
75
+ override fun isAllowFolders () = false
76
+ }
72
77
}
73
- }
74
78
75
- override fun computeDefaultContexts (): MutableCollection <PsiFileSystemItem > {
76
- return roots
77
- .flatMap { it.multiResolve(false ).asIterable() }
78
- .map { it.element }
79
- .filterIsInstance(PsiFileSystemItem ::class .java)
80
- .toMutableList()
79
+ override fun computeDefaultContexts (): MutableCollection <PsiFileSystemItem > {
80
+ return roots
81
+ .flatMap { it.multiResolve(false ).asIterable() }
82
+ .map { it.element }
83
+ .filterIsInstance(PsiFileSystemItem ::class .java)
84
+ .toMutableList()
85
+ }
81
86
}
87
+ } catch (e: StringIndexOutOfBoundsException ) {
88
+ // TODO: this sometimes happens if startInElement is >= importPath.length but we don't exactly know why.
89
+ println (" Error in EmberModuleReferenceContributor for importPath: \" $importPath \" (starting at $startInElement ). " +
90
+ " This is a known issue and can be ignored. See https://github.com/Turbo87/intellij-emberjs/issues/176" )
91
+ return arrayOf()
82
92
}
83
93
84
94
return (roots + refs.allReferences).toTypedArray()
0 commit comments