logo       

Nice/src/bossa/syntax customConstructor.nice,1.14,1.15 formalParameters.nic: msg#00034

Subject: Nice/src/bossa/syntax customConstructor.nice,1.14,1.15 formalParameters.nice,1.4,1.5 importedconstructor.nice,1.11,1.12 monotype.nice,1.7,1.8 niceMethod.nice,1.13,1.14 niceclass.nice,1.17,1.18 nicefieldaccess.nice,1.9,1.10 polytype.nice,1.2,1.3 symbol.nice,1.7,1.8 tools.nice,1.95,1.96 tuple.nice,1.3,1.4 typeIdent.nice,1.2,1.3 typedef.nice,1.12,1.13 Monotype.java,1.41,NONE
Update of /cvsroot/nice/Nice/src/bossa/syntax
In directory 
sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12858/F:/nice/src/bossa/syntax

Modified Files:
        customConstructor.nice formalParameters.nice 
        importedconstructor.nice monotype.nice niceMethod.nice 
        niceclass.nice nicefieldaccess.nice polytype.nice symbol.nice 
        tools.nice tuple.nice typeIdent.nice typedef.nice 
Removed Files:
        Monotype.java 
Log Message:
Converted Monotype.

Index: typeIdent.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/typeIdent.nice,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** typeIdent.nice      12 Jan 2005 20:56:30 -0000      1.2
--- typeIdent.nice      12 Jan 2005 22:06:54 -0000      1.3
***************
*** 49,55 ****
    }
    
!   rawResolve(scope)
    {
!     let res = this.resolveToTypeSymbol(notNull(scope));
  
      if (res instanceof mlsub.typing.Monotype)
--- 49,55 ----
    }
    
!   rawResolve(tm)
    {
!     let res = this.resolveToTypeSymbol(tm);
  
      if (res instanceof mlsub.typing.Monotype)

Index: customConstructor.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/customConstructor.nice,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** customConstructor.nice      12 Jan 2005 20:56:30 -0000      1.14
--- customConstructor.nice      12 Jan 2005 22:06:53 -0000      1.15
***************
*** 87,91 ****
  
      for (int i = 0; i < source.length; i++)
!       res.put(source[i].toString(), new 
Monotype.MonotypeWrapper(destination[i]));
  
      return res;
--- 87,91 ----
  
      for (int i = 0; i < source.length; i++)
!       res.put(source[i].toString(), new MonotypeWrapper(type: 
destination[i]));
  
      return res;
***************
*** 177,181 ****
        if (! (syms[i] instanceof mlsub.typing.MonotypeVar))
          User.error(classe, syms[i] + " is not a type");
!       notNull(params)[i] = new Monotype.MonotypeWrapper(cast(syms[i]));
      }
  
--- 177,181 ----
        if (! (syms[i] instanceof mlsub.typing.MonotypeVar))
          User.error(classe, syms[i] + " is not a type");
!       notNull(params)[i] = new MonotypeWrapper(type: cast(syms[i]));
      }
  

Index: monotype.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/monotype.nice,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** monotype.nice       12 Jan 2005 18:50:37 -0000      1.7
--- monotype.nice       12 Jan 2005 22:06:53 -0000      1.8
***************
*** 16,19 ****
--- 16,168 ----
  
  /**
+    Syntactic monomorphic type.
+ 
+ */
+ public abstract class Monotype implements Located
+ {
+   /** Set by the parser. */
+   public byte nullness = 0;
+ /*
+   public static final byte
+     none = 0,
+     maybe = 1,
+     sure = 2,
+     absent = 3;
+ */
+ 
+   /** @return true if "alike" appears inside this monotype. */
+   boolean containsAlike();
+ 
+   mlsub.typing.Monotype rawResolve(TypeMap tm);
+ 
+   Monotype substitute(Map<String,Monotype> map);
+   
+   public boolean isVoid() = false;
+ 
+   String nullnessString()
+   {
+     if (nullness == /*maybe*/1)
+       return "?";
+     else if (nullness == /*sure*/2)
+       return "!";
+     else
+       return "";
+   }
+ 
+   public mlsub.typing.Monotype resolve(TypeMap tm)
+   {
+     mlsub.typing.Monotype raw = this.rawResolve(tm);
+ 
+     if (nullness == /*none*/0)
+       return raw;
+     else if (nullness == /*maybe*/1)
+       return maybeMonotype(nice.tools.typing.Types.rawType(raw));
+     else if (nullness ==  /*sure*/2)
+       return sureMonotype(nice.tools.typing.Types.rawType(raw));
+     else if (nullness == /*absent*/3)
+       {
+       if (raw instanceof mlsub.typing.MonotypeVar)
+         {
+           nice.tools.typing.Types.makeMarkedType(raw);
+           return raw;
+         }
+       else
+         return sureMonotype(raw);
+       }
+     else
+       throw Internal.error("Bad nullness tag");
+   }
+ 
+   /** called instead of toString if parenthesis are unnecessary */
+   public String toStringExtern() = this.toString(); 
+ 
+   /** don't print type parameters */
+   public String toStringBase() = this.toString();
+ }
+ 
+ /** iterates resolve() on the collection of Monotype */
+ mlsub.typing.Monotype[?] resolveMonotypes(TypeMap s, Monotype[?] c)
+ {
+   if(c == null || c.length == 0)
+     return null;
+     
+   mlsub.typing.Monotype[] res = cast(new mlsub.typing.Monotype[c.length]);
+ 
+   for (int n = c.length; --n >= 0;)
+     {
+       let old = c[n];
+       let nou = old.resolve(s);
+ 
+       if (nou == null)
+       User.error(old, old + " : Monotype not defined");
+ 
+       res[n] = nou;
+     }
+   return res;
+ }
+  
+ /**
+   Wrapping a mlsub Monotype in a syntactic monotype
+  */
+ public class MonotypeWrapper extends Monotype
+ {
+   final mlsub.typing.Monotype type;
+ 
+   containsAlike() = false;
+     
+   rawResolve(tm) = type;
+ 
+   substitute(map) = this;
+ 
+   location() = Location.nowhere();
+ 
+   toString() = String.valueOf(type);
+ }
+ 
+ public final class MonotypeVarWrapper extends MonotypeWrapper
+ {
+   rawResolve(tm)
+   {
+     let res = tm.lookup(type.toString());
+     if (res != null)
+       return cast(res);
+ 
+     return type;
+   }
+ }
+ 
+ /**
+   Wrapper for delaying resolution of constructed monotypes.
+  */
+ public  final class SureMonotypeWrapper extends Monotype
+ {
+   mlsub.typing.TypeConstructor tc;
+   mlsub.typing.Monotype[?] params;
+ 
+   containsAlike() = false;
+ 
+   rawResolve(tm)
+   {
+     try{
+       return sureMonotype(new mlsub.typing.MonotypeConstructor(tc, params));
+     }
+     catch(mlsub.typing.BadSizeEx e){
+       // See if this is a class with default type parameters
+       let res = getTypeWithTC(tc, params);
+       if (res != null)
+         return sureMonotype(res);
+ 
+       throw User.error(this, "Class " + tc + Util.has(e.expected, "type 
parameter", e.actual));
+     }
+   }
+ 
+   substitute(map) = this;
+ 
+   location() = Location.nowhere();
+ 
+   toString() = tc + ( params != null ? Util.map("<",",",">",params) : "");
+ }
+ 
+ /**
     A monotype, build by application of
     a type constructor to type parameters.
***************
*** 30,38 ****
    Monotype cloneType() = new 
MonotypeConstructor(tc:tc,parameters:parameters,loc:loc);
  
!   rawResolve(typeMap)
    {
      if (lowlevelTC == null)
        {
!       let newTC = notNull(this.tc).resolveToTC(notNull(typeMap));
        if (! (newTC instanceof TypeConstructor))
          throw User.error(notNull(this.tc), notNull(this.tc)+" should be a 
type constructor");
--- 179,187 ----
    Monotype cloneType() = new 
MonotypeConstructor(tc:tc,parameters:parameters,loc:loc);
  
!   rawResolve(tm)
    {
      if (lowlevelTC == null)
        {
!       let newTC = notNull(this.tc).resolveToTC(tm);
        if (! (newTC instanceof TypeConstructor))
          throw User.error(notNull(this.tc), notNull(this.tc)+" should be a 
type constructor");
***************
*** 40,44 ****
        }
  
!     mlsub.typing.Monotype[?] resolvedParams = 
parameters.resolve(notNull(typeMap));
  
      try{
--- 189,193 ----
        }
  
!     mlsub.typing.Monotype[?] resolvedParams = parameters.resolve(tm);
  
      try{
***************
*** 107,111 ****
    mlsub.typing.Monotype[?] resolve(TypeMap ts)
    {
!     return Monotype.resolve(ts, content);
    }
  
--- 256,260 ----
    mlsub.typing.Monotype[?] resolve(TypeMap ts)
    {
!     return resolveMonotypes(ts, content);
    }
  
***************
*** 126,134 ****
    private bossa.syntax.Monotype out;
  
!   rawResolve(typeMap)
    {
      return new mlsub.typing.FunType
!       (bossa.syntax.Monotype.resolve(notNull(typeMap), in),
!        out.resolve(typeMap));
    }
  
--- 275,283 ----
    private bossa.syntax.Monotype out;
  
!   rawResolve(tm)
    {
      return new mlsub.typing.FunType
!       (resolveMonotypes(notNull(tm), in),
!        out.resolve(tm));
    }
  
***************
*** 175,179 ****
  
    // Alike should be removed as soon as types are constructed.
!   rawResolve(map)
    {
      throw User.error(this, "\"alike\" can only be used in class method 
definitions");
--- 324,328 ----
  
    // Alike should be removed as soon as types are constructed.
!   rawResolve(tm)
    {
      throw User.error(this, "\"alike\" can only be used in class method 
definitions");

Index: polytype.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/polytype.nice,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** polytype.nice       10 Jan 2005 23:58:04 -0000      1.2
--- polytype.nice       12 Jan 2005 22:06:53 -0000      1.3
***************
*** 31,35 ****
    {
      return new mlsub.typing.Polytype(constraint.resolveToLowlevel(),
!                                    monotype.resolve(typeScope));
    }
  
--- 31,35 ----
    {
      return new mlsub.typing.Polytype(constraint.resolveToLowlevel(),
!                                    monotype.resolve(notNull(typeScope)));
    }
  

Index: tuple.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/tuple.nice,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** tuple.nice  12 Jan 2005 18:50:38 -0000      1.3
--- tuple.nice  12 Jan 2005 22:06:54 -0000      1.4
***************
*** 23,28 ****
    Location location;
  
!   rawResolve(typeMap) = new mlsub.typing.TupleType
!       (bossa.syntax.Monotype.resolve(notNull(typeMap), types.toArray()));
  
    substitute(map)
--- 23,28 ----
    Location location;
  
!   rawResolve(tm) = new mlsub.typing.TupleType
!       (resolveMonotypes(tm, types.toArray()));
  
    substitute(map)

Index: niceclass.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/niceclass.nice,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** niceclass.nice      12 Jan 2005 20:56:30 -0000      1.17
--- niceclass.nice      12 Jan 2005 22:06:53 -0000      1.18
***************
*** 408,412 ****
        List<Parameter> params = new ArrayList();
        for (arg : m.getArgTypes())
!         params.add(new Parameter(type: new Monotype.MonotypeWrapper(arg)));
  
          res.add((m, params));
--- 408,412 ----
        List<Parameter> params = new ArrayList();
        for (arg : m.getArgTypes())
!         params.add(new Parameter(type: new MonotypeWrapper(type: arg)));
  
          res.add((m, params));
***************
*** 566,570 ****
  
          let cname = new LocatedString("<init>",definition.location());
!         let ctype = new mlsub.typing.Polytype(specificCst, new 
mlsub.typing.FunType(Monotype.resolve(definition.getLocalScope(), 
values.types()),sureMonotype(new 
mlsub.typing.MonotypeConstructor(definition.getTC(), 
definition.getTypeParameters()))));
        notNull(constructorMethod)[i] = new DefaultConstructor
          (cname, Node.global, parameters: values, arity: values.size,
--- 566,570 ----
  
          let cname = new LocatedString("<init>",definition.location());
!         let ctype = new mlsub.typing.Polytype(specificCst, new 
mlsub.typing.FunType(resolveMonotypes(definition.getLocalScope(), 
values.types()),sureMonotype(new 
mlsub.typing.MonotypeConstructor(definition.getTC(), 
definition.getTypeParameters()))));
        notNull(constructorMethod)[i] = new DefaultConstructor
          (cname, Node.global, parameters: values, arity: values.size,

Index: niceMethod.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/niceMethod.nice,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** niceMethod.nice     12 Jan 2005 20:56:30 -0000      1.13
--- niceMethod.nice     12 Jan 2005 22:06:53 -0000      1.14
***************
*** 292,297 ****
        constraint.addAtom(new AtomicConstraintWrapper(atom: atom));
  
!       thisType = new Monotype.MonotypeWrapper
!           (sureMonotype
             (new mlsub.typing.MonotypeConstructor
              (alikeTC, c.getTypeParameters())));
--- 292,297 ----
        constraint.addAtom(new AtomicConstraintWrapper(atom: atom));
  
!       thisType = new MonotypeWrapper
!           (type: sureMonotype
             (new mlsub.typing.MonotypeConstructor
              (alikeTC, c.getTypeParameters())));
***************
*** 308,312 ****
        }
      else
!       thisType = new Monotype.SureMonotypeWrapper(tc, c.getTypeParameters());
  
      params.addThis(thisType);
--- 308,312 ----
        }
      else
!       thisType = new SureMonotypeWrapper(tc: tc, params: 
c.getTypeParameters());
  
      params.addThis(thisType);

Index: formalParameters.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/formalParameters.nice,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** formalParameters.nice       12 Jan 2005 20:56:30 -0000      1.4
--- formalParameters.nice       12 Jan 2005 22:06:53 -0000      1.5
***************
*** 254,258 ****
        {
          Parameter p = parameters[i].cloneParam();
!         p.type = new Monotype.MonotypeWrapper(p.type.resolve(scope));
          res.add(p);
        }
--- 254,258 ----
        {
          Parameter p = parameters[i].cloneParam();
!         p.type = new MonotypeWrapper(type: p.type.resolve(scope));
          res.add(p);
        }

Index: nicefieldaccess.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/nicefieldaccess.nice,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** nicefieldaccess.nice        12 Jan 2005 20:56:30 -0000      1.9
--- nicefieldaccess.nice        12 Jan 2005 22:06:53 -0000      1.10
***************
*** 46,50 ****
    let argType = sureMonotype(classDef.lowlevelMonotype());
  
!   let params = createFormalParameters([new Parameter(type: new 
Monotype.MonotypeWrapper(argType))]);
    let constr = createConstraint(classDef.getBinders(), null);
    let res = new NiceFieldAccess(field.getName(), Node.down,
--- 46,50 ----
    let argType = sureMonotype(classDef.lowlevelMonotype());
  
!   let params = createFormalParameters([new Parameter(type: new 
MonotypeWrapper(type: argType))]);
    let constr = createConstraint(classDef.getBinders(), null);
    let res = new NiceFieldAccess(field.getName(), Node.down,

Index: typedef.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/typedef.nice,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** typedef.nice        12 Jan 2005 20:56:30 -0000      1.12
--- typedef.nice        12 Jan 2005 22:06:54 -0000      1.13
***************
*** 333,337 ****
        return null;
  
!     return bossa.syntax.Monotype.resolve(typeScope, 
cast(notNull(parent.parameters).content));
    }
  
--- 333,337 ----
        return null;
  
!     return resolveMonotypes(typeScope, 
cast(notNull(parent.parameters).content));
    }
  
***************
*** 406,412 ****
        typeParameters[i] = mvar;
  
!       bossa.syntax.Monotype v = new Monotype.MonotypeWrapper(mvar);
!       atoms.add(new MonotypeLeqCst(m1: new 
Monotype.MonotypeWrapper(params[i]), m2: v));
!       atoms.add(new MonotypeLeqCst(m1: v, m2: new 
Monotype.MonotypeWrapper(params[i])));
      }
  
--- 406,412 ----
        typeParameters[i] = mvar;
  
!       bossa.syntax.Monotype v = new MonotypeWrapper(type: mvar);
!       atoms.add(new MonotypeLeqCst(m1: new MonotypeWrapper(type: params[i]), 
m2: v));
!       atoms.add(new MonotypeLeqCst(m1: v, m2: new MonotypeWrapper(type: 
params[i])));
      }
  

--- Monotype.java DELETED ---

Index: symbol.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/symbol.nice,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** symbol.nice 11 Jan 2005 21:45:46 -0000      1.7
--- symbol.nice 12 Jan 2005 22:06:54 -0000      1.8
***************
*** 52,56 ****
    resolve()
    {
!     type = notNull(syntacticType).resolve(typeScope);
      syntacticType = null;
  
--- 52,56 ----
    resolve()
    {
!     type = notNull(syntacticType).resolve(notNull(typeScope));
      syntacticType = null;
  

Index: tools.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/tools.nice,v
retrieving revision 1.95
retrieving revision 1.96
diff -C2 -d -r1.95 -r1.96
*** tools.nice  12 Jan 2005 18:50:38 -0000      1.95
--- tools.nice  12 Jan 2005 22:06:54 -0000      1.96
***************
*** 235,239 ****
  ?gnu.expr.Declaration getDeclaration(VarSymbol) = native gnu.expr.Declaration 
VarSymbol.getDeclaration();
  void printInterface(ClassImplementation, java.io.PrintWriter) = native void 
ClassImplementation.printInterface(java.io.PrintWriter);
- mlsub.typing.Monotype[?] resolve(TypeMap, Monotype[?]) = native 
mlsub.typing.Monotype[] Monotype.resolve(TypeMap, Monotype[]);
  ?gnu.bytecode.Type TypeImport_lookup(LocatedString) = native 
gnu.bytecode.Type nice.tools.code.TypeImport.lookup(LocatedString);
  List<Node> children(Node) = native Node.children;
--- 235,238 ----
***************
*** 242,246 ****
  gnu.expr.CopyArgument CopyArgument(Stack<gnu.bytecode.Variable>) = native new 
gnu.expr.CopyArgument(Stack);
  AST AST(List<Definition>, int) = native new AST(List, int);
- bossa.syntax.Monotype 
substitute(bossa.syntax.Monotype,Map<String,bossa.syntax.Monotype>) = native 
bossa.syntax.Monotype bossa.syntax.Monotype.substitute(Map);
  ?mlsub.typing.TypeSymbol lookup(TypeMap, LocatedString) = native 
mlsub.typing.TypeSymbol TypeMap.lookup(LocatedString);
  ?mlsub.typing.TypeSymbol lookup(TypeMap, String) = native 
mlsub.typing.TypeSymbol TypeMap.lookup(String);
--- 241,244 ----

Index: importedconstructor.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/importedconstructor.nice,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** importedconstructor.nice    12 Jan 2005 20:56:30 -0000      1.11
--- importedconstructor.nice    12 Jan 2005 22:06:53 -0000      1.12
***************
*** 96,100 ****
  
    let classDef = def.getDefinition();
!   let returnType = new Monotype.MonotypeWrapper(sureMonotype
        (new mlsub.typing.MonotypeConstructor(classDef.getTC(), 
classDef.getTypeParameters())));
  
--- 96,100 ----
  
    let classDef = def.getDefinition();
!   let returnType = new MonotypeWrapper(type: sureMonotype
        (new mlsub.typing.MonotypeConstructor(classDef.getTC(), 
classDef.getTypeParameters())));
  



-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

Recently Viewed:
science.linguis...    culture.sf.lite...    video.mplayer.c...    yellowdog.gener...    ietf.rfc822/199...    emacs.help/2002...    redhat.release....    kernel.speakup/...    java.openejb.de...    debian.devel.gt...    xfree86.newbie/...    bug-tracking.ma...    pam/2003-05/msg...    games.devel.ope...    user-groups.lin...    music.pancham/2...    network.mq.deve...    web.html.genera...    arklinux.bugs/2...    linux.ecasound/...    qnx.openqnx.dev...    org.user-groups...    file-systems.sf...    trustix.contrib...   
Home | blog view | USPTO Patent Archive | advertise | OSDir is an inevitable website. super tiny logo

Free Magazines

Cisco News
Receive a free quarterly e-newsletter with exclusive articles on how Cisco IT uses its own products and solutions to enable the business.
subscribe

Systems Management News, the newspaper for IT systems administration and data center managers! Each issue of Systems Management News is chock-full of news and analysis to help you understand what's happening in your field.
subscribe

The Enterprise Newsweekly eWeek is the essential technology information source for builders of e-business.
subscribe

Oracle Magazine Oracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world's largest enterprise software company.
subscribe

Total Telecom Total Telecom is "The Economist of the communications industry".
subscribe