Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000478OCamlOCaml generalpublic2001-08-09 17:162001-08-13 11:37
Reporteradministrator 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0000478: Devoir de vacances
Description
Bonjour,

un petit problème de confusion de nom de types assez surprenant:
si une structure porte le même nom qu'une classe dans un module M,
on peut utiliser l'un pour l'autre à l'extérieur du module:

beige[100]% uname -a
Linux beige 2.4.4 #1 Mon Jul 2 15:47:59 CEST 2001 i686 unknown
beige[101]% ocaml
        Objective Caml version 3.02

# module M = struct
  type t = { x : int }
  class t = object method x = 1 end
  end;;
module M : sig type t = { x : int; } class t : object method x : int end end
# open M;;
# let s (y : t) = y.x;;
val s : M.t -> int = <fun>
# s (new t);;
- : int = 537745108
# let o (y : t) = y#x;;
val o : M.t -> int = <fun>
# o { x = 666 };;
Segmentation fault

Étonnant, non ?

--Pascal

TagsNo tags attached.
Attached Files

- Relationships

-  Notes
(0000641)
administrator (administrator)
2001-08-13 11:36

Bonjour Pascal,

> un petit problème de confusion de nom de types assez surprenant:
> si une structure porte le même nom qu'une classe dans un module M,
> on peut utiliser l'un pour l'autre à l'extérieur du module:

En effet, il manquait une vérification d'unicité comparable à celle
que l'on fait pour les noms de types, de modules, et de types de
modules. C'est corrigé. Merci pour le rapport d'erreur.

- Xavier

(0000642)
administrator (administrator)
2001-08-13 11:37

Fixed 2001-08-13 by XL.

- Issue History
Date Modified Username Field Change
2005-11-18 10:13 administrator New Issue


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker