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

Expression de type recursive en position de parametre de classe #2765

Closed
vicuna opened this issue May 15, 2001 · 3 comments
Closed

Expression de type recursive en position de parametre de classe #2765

vicuna opened this issue May 15, 2001 · 3 comments
Labels

Comments

@vicuna
Copy link

vicuna commented May 15, 2001

Original bug ID: 360
Reporter: administrator
Status: closed
Resolution: fixed
Priority: normal
Severity: minor
Category: ~DO NOT USE (was: OCaml general)

Bug description

Bonjour,

Je pense qu'un bug est mis en évidence dans la simple session
suivante (le mesage d'erreur du compilateur me semble injustifié):

/rinderkn/OCaml> ocaml -rectypes
Objective Caml version 3.01

class ['a] c = object end;;

class ['a] c : object end

type 'a t = K of 'a;;

type 'a t = K of 'a

class d = ['a t as 'a] c;;

Characters 11-21:
Already bound type parameter a

type u = 'a t as 'a;;

type u = 'a t as 'a

class d = [u] c;;

class d : [u] c

Le même problème peut apparaître sans l'option -rectypes en utilisant
les variantes polymorphes:

/rinderkn/OCaml> ocaml
Objective Caml version 3.01

class ['a] c = object end;;

class ['a] c : object end

type 'a t = [`K of 'a];;

type 'a t = [ `K of 'a]

class d = ['a t as 'a] c;;

Characters 11-21:
Already bound type parameter a

type u = 'a t as 'a;;

type u = 'a t as 'a

class d = [u] c;;

class d : [u] c

Voilà. Tenez-moi au courant.

À part ça, j'avais posté récemment un autre rapport de possible bug à
caml@inria.fr, mais il me semble maintenant que j'aurais dû en fait
l'adresser à caml-bugs@pauillac.inria.fr, donc, dans le doute, je
copie ci-après mon premier message --- pardon pour l'éventuelle
redite.


Date: Wed, 9 May 2001 17:57:20 +0200
From: Christian RINDERKNECHT rinderkn@hugo.int-evry.fr
To: caml@inria.fr
Subject: Deux bizarreries suspectes

Salut,

Il me semble que le comportement suivant met en évidence une
bizarrerie lexico-syntaxique:

    Objective Caml version 3.01

module type S = sig val f : [< `A of <m : unit -> unit; ..>] -> unit end;;

Characters 58-60:
Syntax error: 'end' expected
Characters 16-19:
This 'sig' might be unmatched

Peut-être l'analyseur croit-il analyser un flux... En tout état de
cause, une espace supplémentaire permet de résoudre le problème, mais
néanmoins ce genre de truc s'ajoute à ceux pour ( * ) et consorts:

module type S = sig val f : [< `A of <m : unit -> unit; ..> ] -> unit end;;

module type S = sig val f : [< `A of < m : unit -> unit; .. >] -> unit end

Indépendemment de la convention lexicale nécessaire, le résultat
imprimé du typeur n'est pas syntaxiquement correct (d'où mon mail).

D'autre part, je trouve bizarre l'erreur suivante:

let _ : bool = true;;

Characters 6-7:
Syntax error


Amitiés à tous,

--

Christian


Christian Rinderknecht Phone +33 (0)1 60 76 44 43
Institut National des Télécommunications Fax +33 (0)1 60 76 47 11
Département Logiciels Réseaux (LOR) WWW
9, Rue Charles Fourier, F-91011 Évry Cedex

Return-Path:
Received: from (rinderkn@localhost)
by hugo.int-evry.fr (8.8.8/jtpda-5.3) id RAA08734
; Wed, 9 May 2001 17:57:20 +0200 (MET DST)
Date: Wed, 9 May 2001 17:57:20 +0200
From: Christian RINDERKNECHT rinderkn@hugo.int-evry.fr
To: caml@inria.fr
Cc: Christian RINDERKNECHT rinderkn@hugo.int-evry.fr
Subject: Deux bizarreries suspectes
Message-ID: 20010509175720.G6480@hugo.int-evry.fr
X-Mailer: Mutt 0.95.5i
Mime-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=iso-8859-1

Salut,

Il me semble que le comportement suivant met en évidence une
bizarrerie lexico-syntaxique:

    Objective Caml version 3.01

module type S = sig val f : [< `A of <m : unit -> unit; ..>] -> unit end;;

Characters 58-60:
Syntax error: 'end' expected
Characters 16-19:
This 'sig' might be unmatched

Peut-être l'analyseur croit-il analyser un flux... En tout état de
cause, une espace supplémentaire permet de résoudre le problème, mais
néanmoins ce genre de truc s'ajoute à ceux pour ( * ) et consorts:

module type S = sig val f : [< `A of <m : unit -> unit; ..> ] -> unit end;;

module type S = sig val f : [< `A of < m : unit -> unit; .. >] -> unit end

Indépendemment de la convention lexicale nécessaire, le résultat
imprimé du typeur n'est pas syntaxiquement correct (d'où mon mail).

D'autre part, je trouve bizarre l'erreur suivante:

let _ : bool = true;;

Characters 6-7:
Syntax error

Amitiés,

--

Christian


Christian Rinderknecht Phone +33 (0)1 60 76 44 43
Institut National des Télécommunications Fax +33 (0)1 60 76 47 11
Département Logiciels Réseaux (LOR) WWW
9, Rue Charles Fourier, F-91011 Évry Cedex



@vicuna
Copy link
Author

vicuna commented May 15, 2001

Comment author: administrator

Salut Christian,

Je pense qu'un bug est mis en évidence dans la simple session
suivante (le mesage d'erreur du compilateur me semble injustifié):

Bon, nous allons regarder ça.

À part ça, j'avais posté récemment un autre rapport de possible bug à
caml@inria.fr, mais il me semble maintenant que j'aurais dû en fait
l'adresser à caml-bugs@pauillac.inria.fr, donc, dans le doute, je
copie ci-après mon premier message --- pardon pour l'éventuelle
redite.
Il me semble que le comportement suivant met en évidence une
bizarrerie lexico-syntaxique:

    Objective Caml version 3.01

module type S = sig val f : [< `A of <m : unit -> unit; ..>] -> unit end;;

Characters 58-60:
Syntax error: 'end' expected
Characters 16-19:
This 'sig' might be unmatched

Oui, j'ai bien vu ton premier message, mais il n'y a pas grand-chose à
dire: [< et >] sont en effet des tokens (pour les streams), et la
séparation lexer/parser et la règle du longest match font que l'erreur
de syntaxe est ici inévitable.

Indépendemment de la convention lexicale nécessaire, le résultat
imprimé du typeur n'est pas syntaxiquement correct (d'où mon mail).

Oui, ça arrive. Bonjour le boulot pour corriger cela...

D'autre part, je trouve bizarre l'erreur suivante:

let _ : bool = true;;

Characters 6-7:
Syntax error

D'après la grammaire actuelle d'OCaml, les contraintes de types dans
les patterns doivent être parenthésées, i.e. (pat : typ) est un
pattern, mais pas pat : typ. Je ne me souviens plus de la raison de
cette syntaxe. Mais c'est vrai que c'est légèrement bizarre en
comparaison avec

let id : typ = exp

qui est accepté (via une règle spéciale de parsing).

  • Xavier

@vicuna
Copy link
Author

vicuna commented May 22, 2001

Comment author: administrator

En effet ce message est tout a` fait injustifie', et c'est bien un bug.
Il est maintenant corrige' dans la version CVS (ocaml 3.01+2).

Cordialement,

Jacques Garrigue

@vicuna
Copy link
Author

vicuna commented May 22, 2001

Comment author: administrator

Fixed in 3.01+2 by JG (2001-05-22)

@vicuna vicuna closed this as completed May 22, 2001
@vicuna vicuna added the bug label Mar 19, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant