Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Type search "/search" endpoint not working

Ouverte
#269 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Domaine
api, backend

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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
Langage dominant
PureScript
Étoiles
121
Forks
51
Métriques de merge des PR
Aucune PR mergée en 30 j

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de purescript/trypurescript

Toutes les issues de purescript/trypurescript

Issues similaires

Plus d'issues Backend & API Design

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.