purescript / purescript/trypurescript
Type search "/search" endpoint not working
まだ誰も着手していません。
- 主要言語
- PureScript
- スター
- 121
- フォーク
- 51
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
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
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
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.
索引モデルが issue の本文から書いたものです。
評価
- 領域
- api, backend
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100