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

Type search "/search" endpoint not working #269

Open
pete-murphy opened this issue Feb 6, 2022 · 0 comments
Open

Type search "/search" endpoint not working #269

pete-murphy opened this issue Feb 6, 2022 · 0 comments

Comments

@pete-murphy
Copy link
Contributor

pete-murphy commented Feb 6, 2022

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant