Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't suggest hole filling for ambiguous holes or when there are too many suggestions #532

Closed
expipiplus1 opened this issue Oct 23, 2020 · 4 comments
Labels

Comments

@expipiplus1
Copy link
Contributor

expipiplus1 commented Oct 23, 2020

I have a hole (foo = notInScope _) with an ambiguous type and HLS suggests over 200 suggestions!

I think that when there are more than just a few suggestions none should be returned as the time take to find what one wants in a list will be greater than just typing any of them by hand.

6. replace _ with t'
7. replace _ with t
8. replace _ with s
9. replace _ with unify
10. replace _ with UTerm
11. replace _ with UVar
12. replace _ with ()
13. replace _ with []
14. replace _ with (
15. replace _ with Fix
16. replace _ with M1
17. replace _ with U1
18. replace _ with Just
19. replace _ with K1
20. replace _ with Nothing
21. replace _ with Par1
22. replace _ with Right
23. replace _ with Rec1
24. replace _ with L1
25. replace _ with R1
26. replace _ with Comp1
27. replace _ with Left
28. replace _ with False
29. replace _ with True
30. replace _ with LT
31. replace _ with EQ
32. replace _ with GT
33. replace _ with UAddr
34. replace _ with UChar
35. replace _ with UDouble
36. replace _ with UFloat
37. replace _ with UInt
38. replace _ with UWord
39. replace _ with PrefixI
40. replace _ with InfixI
41. replace _ with LeftAssociative
42. replace _ with RightAssociative
43. replace _ with NotAssociative
44. replace _ with SourceUnpack
45. replace _ with SourceNoUnpack
46. replace _ with NoSourceUnpackedness
47. replace _ with SourceLazy
48. replace _ with SourceStrict
49. replace _ with NoSourceStrictness
50. replace _ with DecidedLazy
51. replace _ with DecidedStrict
52. replace _ with DecidedUnpack
53. replace _ with MetaData
54. replace _ with MetaCons
55. replace _ with MetaSel
56. replace _ with Prefix
57. replace _ with Infix
58. replace _ with (-)
59. replace _ with (*)
60. replace _ with (.)
61. replace _ with lines
62. replace _ with splitAt
63. replace _ with otherwise
64. replace _ with ($)
65. replace _ with (+)
66. replace _ with (^)
67. replace _ with seq
68. replace _ with either
69. replace _ with maybe
70. replace _ with curry
71. replace _ with fst
72. replace _ with snd
73. replace _ with uncurry
74. replace _ with ($!)
75. replace _ with (++)
76. replace _ with asTypeOf
77. replace _ with const
78. replace _ with flip
79. replace _ with id
80. replace _ with map
81. replace _ with until
82. replace _ with (**)
83. replace _ with acos
84. replace _ with acosh
85. replace _ with asin
86. replace _ with asinh
87. replace _ with atan
88. replace _ with atan2
89. replace _ with atanh
90. replace _ with cos
91. replace _ with cosh
92. replace _ with decodeFloat
93. replace _ with encodeFloat
94. replace _ with exp
95. replace _ with exponent
96. replace _ with floatDigits
97. replace _ with floatRadix
98. replace _ with floatRange
99. replace _ with isDenormalized
100. replace _ with isIEEE
101. replace _ with isInfinite
102. replace _ with isNaN
103. replace _ with isNegativeZero
104. replace _ with log
105. replace _ with logBase
106. replace _ with pi
107. replace _ with scaleFloat
108. replace _ with significand
109. replace _ with sin
110. replace _ with sinh
111. replace _ with sqrt
112. replace _ with tan
113. replace _ with tanh
114. replace _ with abs
115. replace _ with fromInteger
116. replace _ with negate
117. replace _ with signum
118. replace _ with subtract
119. replace _ with (/)
120. replace _ with (^^)
121. replace _ with ceiling
122. replace _ with div
123. replace _ with divMod
124. replace _ with even
125. replace _ with floor
126. replace _ with fromIntegral
127. replace _ with fromRational
128. replace _ with gcd
129. replace _ with lcm
130. replace _ with mod
131. replace _ with odd
132. replace _ with properFraction
133. replace _ with quot
134. replace _ with quotRem
135. replace _ with realToFrac
136. replace _ with recip
137. replace _ with rem
138. replace _ with round
139. replace _ with toInteger
140. replace _ with toRational
141. replace _ with truncate
142. replace _ with showChar
143. replace _ with showParen
144. replace _ with showString
145. replace _ with appendFile
146. replace _ with getChar
147. replace _ with getContents
148. replace _ with getLine
149. replace _ with interact
150. replace _ with putChar
151. replace _ with putStr
152. replace _ with putStrLn
153. replace _ with readFile
154. replace _ with writeFile
155. replace _ with unlines
156. replace _ with unwords
157. replace _ with words
158. replace _ with ioError
159. replace _ with userError
160. replace _ with (!!)
161. replace _ with break
162. replace _ with cycle
163. replace _ with drop
164. replace _ with dropWhile
165. replace _ with head
166. replace _ with init
167. replace _ with iterate
168. replace _ with last
169. replace _ with repeat
170. replace _ with replicate
171. replace _ with reverse
172. replace _ with scanl
173. replace _ with scanl1
174. replace _ with scanr
175. replace _ with scanr1
176. replace _ with span
177. replace _ with tail
178. replace _ with take
179. replace _ with takeWhile
180. replace _ with unzip
181. replace _ with unzip3
182. replace _ with zip3
183. replace _ with zipWith
184. replace _ with zipWith3
185. replace _ with lex
186. replace _ with readParen
187. replace _ with (&&)
188. replace _ with not
189. replace _ with (||)
190. replace _ with filter
191. replace _ with zip
192. replace _ with prec
193. replace _ with unComp1
194. replace _ with unK1
195. replace _ with unM1
196. replace _ with unPar1
197. replace _ with unRec1
198. replace _ with uAddr#
199. replace _ with uChar#
200. replace _ with uDouble#
201. replace _ with uFloat#
202. replace _ with uInt#
203. replace _ with uWord#
204. replace _ with unify _
205. replace _ with InfixI _
206. replace _ with MetaData _
207. replace _ with MetaCons _
208. replace _ with MetaSel _
209. replace _ with Infix _
210. replace _ with (-) _
211. replace _ with (*) _
212. replace _ with lines _
213. replace _ with (+) _

Yes, I did mean uWord#, however did you know!

@pepeiborra
Copy link
Collaborator

PRs welcome Joe! To ghcide...

expipiplus1 added a commit to expipiplus1/ghcide that referenced this issue Oct 28, 2020
Perhaps it would be possible to use the type of the hole to make a
better limiter here, but this is better than the current situation I
think.

Closes haskell/haskell-language-server#532
@jneira
Copy link
Member

jneira commented Jun 12, 2021

@expipiplus1 any chance to reopen the closed pr in ghcide here?

@expipiplus1
Copy link
Contributor Author

Done, #1914

@michaelpj
Copy link
Collaborator

Now actually fixed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants