logo       

Nice/src/bossa/syntax contract.nice,1.1,1.2 customConstructor.nice,1.11,1.1: msg#00023

Subject: Nice/src/bossa/syntax contract.nice,1.1,1.2 customConstructor.nice,1.11,1.12 enum.nice,1.10,1.11 formalParameters.nice,1.1,1.2 funexp.nice,1.4,1.5 globalvar.nice,1.2,1.3 locals.nice,1.5,1.6 methodImplementation.nice,1.7,1.8 methodbody.nice,1.9,1.10 niceMethod.nice,1.10,1.11 niceclass.nice,1.14,1.15 symbol.nice,1.6,1.7 tools.nice,1.93,1.94 try.nice,1.3,1.4 typecheck.nice,1.120,1.121 MonoSymbol.java,1.31,NONE
Update of /cvsroot/nice/Nice/src/bossa/syntax
In directory 
sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9083/F:/nice/src/bossa/syntax

Modified Files:
        contract.nice customConstructor.nice enum.nice 
        formalParameters.nice funexp.nice globalvar.nice locals.nice 
        methodImplementation.nice methodbody.nice niceMethod.nice 
        niceclass.nice symbol.nice tools.nice try.nice typecheck.nice 
Removed Files:
        MonoSymbol.java 
Log Message:
Converted MonoSymbol.

Index: customConstructor.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/customConstructor.nice,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** customConstructor.nice      10 Jan 2005 23:58:04 -0000      1.11
--- customConstructor.nice      11 Jan 2005 21:45:46 -0000      1.12
***************
*** 100,104 ****
  
      let lambda = nice.tools.code.Gen.createCustomConstructor
!       (cast(this.javaReturnType()), this.javaArgTypes(), this.getSymbols());
  
      nice.tools.code.Gen.setMethodBody(lambda, body.generateCode());
--- 100,104 ----
  
      let lambda = nice.tools.code.Gen.createCustomConstructor
!       (cast(this.javaReturnType()), this.javaArgTypes(), 
cast(this.getSymbols()));
  
      nice.tools.code.Gen.setMethodBody(lambda, body.generateCode());

Index: methodbody.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/methodbody.nice,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** methodbody.nice     3 Jan 2005 01:24:28 -0000       1.9
--- methodbody.nice     11 Jan 2005 21:45:46 -0000      1.10
***************
*** 364,368 ****
  
        // Introduce the types of the arguments
!       mlsub.typing.Monotype[] monotypes = MonoSymbol.getMonotype(parameters);
  
        for (int n = 0; n < formals.length; n++)
--- 364,369 ----
  
        // Introduce the types of the arguments
!       mlsub.typing.Monotype[] monotypes = notNull(parameters).mapToArray(
!               MonoSymbol sym => notNull(sym.getMonotype()));
  
        for (int n = 0; n < formals.length; n++)

--- MonoSymbol.java DELETED ---

Index: funexp.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/funexp.nice,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** funexp.nice 30 Dec 2004 20:58:37 -0000      1.4
--- funexp.nice 11 Jan 2005 21:45:46 -0000      1.5
***************
*** 97,101 ****
        throw User.error(this, "Missing return statement");
  
!     mlsub.typing.Monotype t = new 
mlsub.typing.FunType(MonoSymbol.getMonotype(formals), 
                             notNull(_inferredReturnType).getMonotype());
      type = new mlsub.typing.Polytype
--- 97,101 ----
        throw User.error(this, "Missing return statement");
  
!     mlsub.typing.Monotype t = new mlsub.typing.FunType(getMonotypes(formals), 
                             notNull(_inferredReturnType).getMonotype());
      type = new mlsub.typing.Polytype
***************
*** 118,124 ****
      gnu.expr.LambdaExp res = nice.tools.code.Gen.createMethod
        (null, 
!        nice.tools.code.Types.javaType(MonoSymbol.getMonotype(formals)), 
         nice.tools.code.Types.javaType(this.inferredReturnType()), 
!        formals, false);
      nice.tools.code.Gen.setMethodBody(res, body.generateCode());
      return res;
--- 118,124 ----
      gnu.expr.LambdaExp res = nice.tools.code.Gen.createMethod
        (null, 
!        nice.tools.code.Types.javaType(getMonotypes(formals)), 
         nice.tools.code.Types.javaType(this.inferredReturnType()), 
!        cast(formals), false);
      nice.tools.code.Gen.setMethodBody(res, body.generateCode());
      return res;

Index: enum.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/enum.nice,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** enum.nice   31 Dec 2004 18:40:45 -0000      1.10
--- enum.nice   11 Jan 2005 21:45:46 -0000      1.11
***************
*** 183,187 ****
      args.add(new Arguments.Argument(argExps[i], fields[i].getName()));
  
!   return new EnumSymbol(name, type, definition: def, value: 
        createNewExp(new TypeIdent(name: enumName), new Arguments(args)));
  }
--- 183,187 ----
      args.add(new Arguments.Argument(argExps[i], fields[i].getName()));
  
!   return new EnumSymbol(name, syntacticType: type, definition: def, value: 
        createNewExp(new TypeIdent(name: enumName), new Arguments(args)));
  }

Index: contract.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/contract.nice,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** contract.nice       1 Jan 2005 14:38:03 -0000       1.1
--- contract.nice       11 Jan 2005 21:45:46 -0000      1.2
***************
*** 69,73 ****
      if (! nice.tools.typing.Types.isVoid(resultType))
        result = new ResultMonoSymbol(new LocatedString("result", location), 
!                               resultType);
  
      try {
--- 69,73 ----
      if (! nice.tools.typing.Types.isVoid(resultType))
        result = new ResultMonoSymbol(new LocatedString("result", location), 
!                               type: resultType);
  
      try {

Index: niceclass.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/niceclass.nice,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** niceclass.nice      5 Jan 2005 02:02:44 -0000       1.14
--- niceclass.nice      11 Jan 2005 21:45:46 -0000      1.15
***************
*** 237,241 ****
        Monotype.sure(new mlsub.typing.MonotypeConstructor(definition.getTC(),
                        definition.getTypeParameters()));
!     thisSymbol = new ThisSymbol(thisName, thisType, declaringClass: this);
  
      Node.thisExp = createSymbolExp(notNull(thisSymbol), 
definition.location());
--- 237,241 ----
        Monotype.sure(new mlsub.typing.MonotypeConstructor(definition.getTC(),
                        definition.getTypeParameters()));
!     thisSymbol = new ThisSymbol(thisName, type: thisType, declaringClass: 
this);
  
      Node.thisExp = createSymbolExp(notNull(thisSymbol), 
definition.location());

Index: locals.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/locals.nice,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** locals.nice 10 Jan 2005 23:58:04 -0000      1.5
--- locals.nice 11 Jan 2005 21:45:46 -0000      1.6
***************
*** 151,155 ****
  public new LocalVariable(LocatedString name, ?Monotype type, boolean 
constant, ?Expression value)
  {
!   this(value: value, left:new LocalVariableSymbol(name, type, constant: 
constant));
  }
  
--- 151,155 ----
  public new LocalVariable(LocatedString name, ?Monotype type, boolean 
constant, ?Expression value)
  {
!   this(value: value, left:new LocalVariableSymbol(name, syntacticType: type, 
constant: constant));
  }
  
***************
*** 182,186 ****
  {
    ?Monotype t = null;
!   this(value: value, left: new LocalConstantSymbol(name,t));
  }
  
--- 182,186 ----
  {
    ?Monotype t = null;
!   this(value: value, left: new LocalConstantSymbol(name, syntacticType: t));
  }
  

Index: typecheck.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/typecheck.nice,v
retrieving revision 1.120
retrieving revision 1.121
diff -C2 -d -r1.120 -r1.121
*** typecheck.nice      1 Jan 2005 16:36:31 -0000       1.120
--- typecheck.nice      11 Jan 2005 21:45:46 -0000      1.121
***************
*** 488,492 ****
      {
        (MonoSymbol variable, mlsub.typing.Monotype type) = conditionalTypes[i];
!       replaced.add((variable, variable.type));
        variable.type = type;
      }
--- 488,492 ----
      {
        (MonoSymbol variable, mlsub.typing.Monotype type) = conditionalTypes[i];
!       replaced.add((variable, notNull(variable.type)));
        variable.type = type;
      }
***************
*** 713,717 ****
        reportNullAssignmentError(decl, t, value: value, 
                                  target.name.toString(),
!                                 target.getMonotype());
        throw assignmentError(target, target.name.toString(), 
                              String.valueOf(target.getMonotype), 
--- 713,717 ----
        reportNullAssignmentError(decl, t, value: value, 
                                  target.name.toString(),
!                                 notNull(target.getMonotype()));
        throw assignmentError(target, target.name.toString(), 
                              String.valueOf(target.getMonotype), 
***************
*** 789,793 ****
        reportNullAssignmentError(decl, t, value: value, 
                                  target.name.toString(),
!                                 target.getMonotype());
        throw assignmentError(target, target.name.toString(), 
                              String.valueOf(target.getMonotype), 
--- 789,793 ----
        reportNullAssignmentError(decl, t, value: value, 
                                  target.name.toString(),
!                                 notNull(target.getMonotype()));
        throw assignmentError(target, target.name.toString(), 
                              String.valueOf(target.getMonotype), 
***************
*** 852,857 ****
            variables.foreach (MonoSymbol variable => 
                               setVarType(variable, 
!                                         now: makeSure(variable.type), 
!                                         out: variable.type));
  
          ?List<(MonoSymbol, mlsub.typing.Monotype)> instanceofIfTrue = 
--- 852,857 ----
            variables.foreach (MonoSymbol variable => 
                               setVarType(variable, 
!                                         now: 
makeSure(notNull(variable.type)), 
!                                         out: notNull(variable.type)));
  
          ?List<(MonoSymbol, mlsub.typing.Monotype)> instanceofIfTrue = 

Index: niceMethod.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/niceMethod.nice,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** niceMethod.nice     10 Jan 2005 23:58:04 -0000      1.10
--- niceMethod.nice     11 Jan 2005 21:45:46 -0000      1.11
***************
*** 373,377 ****
  
    res = nice.tools.code.Gen.createMethod
!     (name, argTypes, retType, def.getSymbols(), true, receiver != null);
    res.parameterCopies = 
cast(notNull(def.formalParameters()).getParameterCopies());
  
--- 373,377 ----
  
    res = nice.tools.code.Gen.createMethod
!     (name, argTypes, retType, cast(def.getSymbols()), true, receiver != null);
    res.parameterCopies = 
cast(notNull(def.formalParameters()).getParameterCopies());
  

Index: methodImplementation.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/methodImplementation.nice,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** methodImplementation.nice   4 Jan 2005 21:20:39 -0000       1.7
--- methodImplementation.nice   11 Jan 2005 21:45:46 -0000      1.8
***************
*** 83,87 ****
  
          LocatedString argName = p.getName() != null ? notNull(p.getName()) : 
new LocatedString("argument_"+tn, bossa.util.Location.nowhere());
!       res[tn] = new MonoSymbol(argName, type);
        }
      notNull(scope).addSymbols(res);
--- 83,87 ----
  
          LocatedString argName = p.getName() != null ? notNull(p.getName()) : 
new LocatedString("argument_"+tn, bossa.util.Location.nowhere());
!       res[tn] = new MonoSymbol(argName, type: type);
        }
      notNull(scope).addSymbols(res);
***************
*** 170,174 ****
                       this.javaArgTypes(),
                       notNull(declaration).javaReturnType(),
!                      parameters,
                       true, false);
  
--- 170,174 ----
                       this.javaArgTypes(),
                       notNull(declaration).javaReturnType(),
!                      cast(parameters),
                       true, false);
  

Index: formalParameters.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/formalParameters.nice,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** formalParameters.nice       3 Jan 2005 01:24:28 -0000       1.1
--- formalParameters.nice       11 Jan 2005 21:45:46 -0000      1.2
***************
*** 353,357 ****
    ParameterSymbol getSymbol()
    {
!     symbol = new ParameterSymbol(this.getName(), type);
      return notNull(symbol);
    }
--- 353,357 ----
    ParameterSymbol getSymbol()
    {
!     symbol = new ParameterSymbol(this.getName(), syntacticType: type);
      return notNull(symbol);
    }

Index: symbol.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/symbol.nice,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** symbol.nice 10 Jan 2005 20:04:43 -0000      1.6
--- symbol.nice 11 Jan 2005 21:45:46 -0000      1.7
***************
*** 13,16 ****
--- 13,127 ----
  package bossa.syntax;
  
+ 
+ /**
+    A variable symbol which has a monotype (eg a function parameter)
+  
+    @see PolySymbol
+ */
+ public class MonoSymbol extends VarSymbol
+ {
+   ?Monotype syntacticType = null;
+   ?mlsub.typing.Monotype type = null;
+ 
+   boolean captured = false;
+ 
+   /** The depth of nested block at which this variable is defined. */
+   int depth = 0;
+ 
+   boolean used = false;
+ 
+ /*  public MonoSymbol(LocatedString name, Monotype type)
+   {
+     super(name);
+     this.syntacticType=type;
+   }
+   
+   public MonoSymbol(LocatedString name, mlsub.typing.Monotype type)
+   {
+     super(name);
+     this.type = type;
+   }
+ */  
+   getType() = new mlsub.typing.Polytype(type);
+ 
+   public ?mlsub.typing.Monotype getMonotype()
+   {
+     return type;
+   }
+ 
+   resolve()
+   {
+     type = notNull(syntacticType).resolve(typeScope);
+     syntacticType = null;
+ 
+     if (nice.tools.typing.Types.isVoid(type))
+       throw User.error(name, "A variable cannot have a void type");
+   }
+ 
+   /**
+      @return
+      0 : doesn't match
+      1 : wasn't even a function
+      2 : matches
+   */
+   match(arguments)
+   {
+     let k = nice.tools.typing.Types.rawType(type).getKind();
+     if (k instanceof FunTypeKind)
+       if (!notNull(arguments).plainApplication(k.domainArity, this))
+       return 0;
+       else
+       return 2;
+     else 
+       return 1;
+   }
+ 
+   explainWhyMatchFails(arguments)
+   {
+     let k = nice.tools.typing.Types.rawType(type).getKind();
+     if (k instanceof FunTypeKind)
+       { 
+       int arity = k.domainArity;
+       if (notNull(arguments).size() != arity)
+         return name + Util.has(arity, "parameter", notNull(arguments).size());
+       else
+         // If the number of arguments is correct, it must be that
+         // some arguments are named.
+         return name + " does not have named parameters";
+       }
+     else 
+       return name + " is not a function";
+   }
+ 
+   // explained in OverloadedSymbolExp
+   makeClonedType() {}
+   releaseClonedType() {}
+   getClonedType() = this.getType();
+   
+   toString()
+   {
+     if (type == null)
+       return notNull(syntacticType) + " " + name;
+ 
+     return notNull(type) + " " + name;
+   }
+ }
+ 
+ public MonoSymbol createMonoSymbol(LocatedString name, Monotype type)
+ {
+   return new MonoSymbol(name, syntacticType: type);
+ }
+ 
+ /**
+    Maps getMonotype over an array of MonoSymbols.
+  */
+ mlsub.typing.Monotype[?] getMonotypes(MonoSymbol[?] symbols)
+ {
+   if (symbols == null)
+     return null;
+ 
+   return symbols.mapToArray(MonoSymbol sym => notNull(sym.getMonotype()));
+ }
+ 
  /**
     A variable symbol which has a polytype (eg a method symbol)

Index: tools.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/tools.nice,v
retrieving revision 1.93
retrieving revision 1.94
diff -C2 -d -r1.93 -r1.94
*** tools.nice  10 Jan 2005 23:58:04 -0000      1.93
--- tools.nice  11 Jan 2005 21:45:46 -0000      1.94
***************
*** 203,207 ****
  mlsub.typing.Polytype getType(Expression) = 
    native mlsub.typing.Polytype Expression.getType();
- mlsub.typing.Monotype type(MonoSymbol) = native MonoSymbol.type;
  GlobalTypeScope getGlobalTypeScope() = native GlobalTypeScope 
Node.getGlobalTypeScope();
  ?gnu.bytecode.ClassType staticClass(Arguments) = native 
gnu.bytecode.ClassType Arguments.staticClass();
--- 203,206 ----

Index: globalvar.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/globalvar.nice,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** globalvar.nice      26 Nov 2004 20:26:02 -0000      1.2
--- globalvar.nice      11 Jan 2005 21:45:46 -0000      1.3
***************
*** 97,101 ****
      let res = new GlobalVarDeclaration(name, Node.global, left: cast(null),
                        value: value, constant: constant);
!     res.left = new GlobalVarSymbol(name, type, definition: res);
      res.addChild(res.left);
      return res;
--- 97,101 ----
      let res = new GlobalVarDeclaration(name, Node.global, left: cast(null),
                        value: value, constant: constant);
!     res.left = new GlobalVarSymbol(name, syntacticType: type, definition: 
res);
      res.addChild(res.left);
      return res;

Index: try.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/try.nice,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** try.nice    16 Dec 2004 16:21:07 -0000      1.3
--- try.nice    11 Jan 2005 21:45:46 -0000      1.4
***************
*** 104,108 ****
    type.nullness = Monotype.sure;
  
!   this(exnVar: new MonoSymbol(varName, type), tc: tc,
                typeLocation: tc.location, varName: varName, body: body);
  }
\ No newline at end of file
--- 104,108 ----
    type.nullness = Monotype.sure;
  
!   this(exnVar: new MonoSymbol(varName, syntacticType: type), tc: tc,
                typeLocation: tc.location, varName: varName, body: body);
  }
\ No newline at end of file



-------------------------------------------------------
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