purescript / purescript/trypurescript
Type search "/search" endpoint not working
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- PureScript
- Sterne
- 121
- Forks
- 51
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
The /search endpoint doesn't seem to work (it's not officially documented, so I'm not sure if it's expected to work)
❯ curl -G --data-urlencode 'q=Unit' https://compile.purescript.org/search
{"error":"Cannot parse type"}%
I am able to get it "working" locally (maybe not as intended) by stripping the TokLayoutStart and TokLayoutEnd tokens
tryParseType :: Text -> Maybe P.SourceType
tryParseType = hush . fmap (CST.convertType "<file>") . runParser CST.parseTypeP
where
hush = either (const Nothing) Just
runParser :: CST.Parser a -> Text -> Either String a
runParser p =
let p' = do
_ <- CSTM.token CST.TokLayoutStart
result <- p
_ <- CSTM.token CST.TokLayoutEnd
_ <- CSTM.token CST.TokEof
pure result
in bimap (CST.prettyPrintError . NE.head) snd
. CST.runTokenParser p'
. CST.lexTopLevel
This produces output for certain input
❯ curl -G --data-urlencode 'q=Unit' localhost:8081/search | jq '.'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 784 0 784 0 0 341 0 --:--:-- 0:00:02 --:--:-- 342
{
"results": [
"Control.Subcategory.Closed.assertClosed",
"Control.Subcategory.HasStart.start",
"Control.Subcategory.HasUnit.unit",
"Data.Bounded.bottom",
"Data.Bounded.top",
"Data.Bounded.Generic.genericBottom",
"Data.Bounded.Generic.genericTop",
"Data.HeytingAlgebra.ff",
"Data.HeytingAlgebra.tt",
"Data.HeytingAlgebra.Generic.genericFF",
"Data.HeytingAlgebra.Generic.genericTT",
"Data.Monoid.mempty",
"Data.Monoid.Generic.genericMempty",
"Data.Ring.Module.mzeroL",
"Data.Ring.Module.mzeroR",
"Data.Semiring.one",
"Data.Semiring.zero",
"Data.Semiring.Generic.genericOne",
"Data.Semiring.Generic.genericZero",
"Data.Typelevel.Undefined.undefined",
"Data.Unit.unit",
"Formless.Class.Initial.initial",
"Options.Applicative.Builder.idm",
"Partial.crash",
"Protobuf.Internal.Common.default",
"Undefined.undefined"
]
}
but crashes on List a -> Maybe a (one of @paf31's examples from #55)
❯ curl -G --data-urlencode 'q=List a -> Maybe a' localhost:8081/search
curl: (52) Empty reply from server
q=(a -> f b) -> t a -> f (t b) fails similarly, and in both cases in the server logs I see
An internal error occurred during compilation: Skolem has no kind
Please report this at https://github.com/purescript/purescript/issues
CallStack (from HasCallStack):
error, called at src/Language/PureScript/Crash.hs:23:3 in purescript-cst-0.4.0.0-BFtByvwp6rF98omNSi831H:Language.PureScript.Crash
internalError, called at src/Language/PureScript/TypeChecker/Kinds.hs:501:32 in purescript-0.14.5-4MEYSDbbzAH8atq8Yve4k8:Language.PureScript.TypeChecker.Kinds
elaborateKind, called at src/Language/PureScript/TypeChecker/Unify.hs:70:9 in purescript-0.14.5-4MEYSDbbzAH8atq8Yve4k8:Language.PureScript.TypeChecker.Unify
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Start at the /search endpoint and its tryParseType parser path, reproducing the documented curl queries locally. Trace failures through Language.PureScript.TypeChecker.Kinds at line 501 and Language.PureScript.TypeChecker.Unify at line 70. Done means valid type searches return results or a handled error without the endpoint rejecting basic input or crashing.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Bereich
- api, backend
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100