nice-commit Mailing List for The Nice Programming Language (Page 72)
Brought to you by:
bonniot
You can subscribe to this list here.
2003 |
Jan
|
Feb
(60) |
Mar
(125) |
Apr
(183) |
May
(140) |
Jun
(227) |
Jul
(141) |
Aug
(181) |
Sep
(75) |
Oct
(89) |
Nov
(187) |
Dec
(162) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(69) |
Feb
(197) |
Mar
(98) |
Apr
(26) |
May
(10) |
Jun
(85) |
Jul
(88) |
Aug
(79) |
Sep
(80) |
Oct
(81) |
Nov
(53) |
Dec
(109) |
2005 |
Jan
(68) |
Feb
(77) |
Mar
(232) |
Apr
(79) |
May
(37) |
Jun
(37) |
Jul
(3) |
Aug
(18) |
Sep
|
Oct
|
Nov
|
Dec
|
2006 |
Jan
(10) |
Feb
|
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
(1) |
Dec
(9) |
2007 |
Jan
(2) |
Feb
(8) |
Mar
(2) |
Apr
(5) |
May
|
Jun
|
Jul
|
Aug
(4) |
Sep
|
Oct
|
Nov
(17) |
Dec
(6) |
2008 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <bo...@us...> - 2003-11-28 13:52:11
|
Update of /cvsroot/nice/Nice/src/bossa/util In directory sc8-pr-cvs1:/tmp/cvs-serv14447/src/bossa/util Modified Files: Printable.java Log Message: Make sure that contracts are not lost when importing packages. Index: Printable.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/util/Printable.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Printable.java 26 Jul 2000 13:51:43 -0000 1.2 --- Printable.java 28 Nov 2003 13:52:08 -0000 1.3 *************** *** 28,31 **** --- 28,32 ---- static final int inConstraint = 0; static final int detailed = 1; + static final int parsable = 2; public String toString(int param); |
From: <bo...@us...> - 2003-11-28 13:52:11
|
Update of /cvsroot/nice/Nice/testsuite/compiler/designByContract In directory sc8-pr-cvs1:/tmp/cvs-serv14447/testsuite/compiler/designByContract Modified Files: methods.testsuite Log Message: Make sure that contracts are not lost when importing packages. Index: methods.testsuite =================================================================== RCS file: /cvsroot/nice/Nice/testsuite/compiler/designByContract/methods.testsuite,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** methods.testsuite 27 Jul 2003 13:14:44 -0000 1.4 --- methods.testsuite 28 Nov 2003 13:52:08 -0000 1.5 *************** *** 68,69 **** --- 68,85 ---- f() = 1; + + /// PASS + /// package a + /// Toplevel + void foo(int x, int y) requires x > 0, y <= 0 {} + /// package b import a + var ok = false; + try { + foo(-1, 0); + } catch(AssertionFailed e) { ok = true; } + assert ok; + ok = false; + try { + foo(0, 1); + } catch(AssertionFailed e) { ok = true; } + assert ok; |
From: <ar...@us...> - 2003-11-28 12:10:14
|
Update of /cvsroot/nice/Nice/testsuite/compiler/enums In directory sc8-pr-cvs1:/tmp/cvs-serv28265/F:/nice/testsuite/compiler/enums Modified Files: enum.testsuite Log Message: Testcase for family method of enums in case of multiple packages. Index: enum.testsuite =================================================================== RCS file: /cvsroot/nice/Nice/testsuite/compiler/enums/enum.testsuite,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** enum.testsuite 27 Nov 2003 23:37:08 -0000 1.4 --- enum.testsuite 28 Nov 2003 12:10:10 -0000 1.5 *************** *** 78,79 **** --- 78,90 ---- /// Toplevel enum Color {red, blue, green} + + /// PASS + /// package a + /// Toplevel + enum Color {red, blue, green} + /// package b import a + List<Color> elems = red.family(); + assert elems.size() == 3; + assert elems.contains(red); + assert elems.contains(blue); + assert elems.contains(green); |
From: <bo...@us...> - 2003-11-28 02:57:16
|
Update of /cvsroot/nice/Nice/src/nice/tools/testsuite In directory sc8-pr-cvs1:/tmp/cvs-serv10718/src/nice/tools/testsuite Modified Files: TestNice.java Log Message: Load classes using a custom classloader using directories instead of using URLClassLoader, since it seems that one has performance issues, at least on Windows. Index: TestNice.java =================================================================== RCS file: /cvsroot/nice/Nice/src/nice/tools/testsuite/TestNice.java,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** TestNice.java 27 Nov 2003 22:45:59 -0000 1.27 --- TestNice.java 28 Nov 2003 02:57:13 -0000 1.28 *************** *** 499,520 **** */ static ClassLoader getClassLoader() { - ClassLoader classLoader = null; - - try { - // This is normally where the compiled classes are in the dev tree. - if (_runtime == null) - _runtime = "classes"; ! URL[] urls = { ! new URL("file://" + getTempFolder().getAbsolutePath() + "/"), ! new URL("file://" + new File(getRuntime()).getAbsolutePath() + "/") ! }; ! classLoader = new java.net.URLClassLoader(urls, null); ! } ! catch(java.net.MalformedURLException ex) { ! throw new Error(ex.toString()); ! } ! return classLoader; } --- 499,509 ---- */ static ClassLoader getClassLoader() { ! // This is normally where the compiled classes are in the dev tree. ! if (_runtime == null) ! _runtime = "classes"; ! File[] dirs = { getTempFolder(), new File(getRuntime()) }; ! return new nice.tools.util.DirectoryClassLoader(dirs, null); } |
From: <bo...@us...> - 2003-11-28 02:57:16
|
Update of /cvsroot/nice/Nice/src/nice/tools/util In directory sc8-pr-cvs1:/tmp/cvs-serv10718/src/nice/tools/util Added Files: DirectoryClassLoader.java Log Message: Load classes using a custom classloader using directories instead of using URLClassLoader, since it seems that one has performance issues, at least on Windows. --- NEW FILE: DirectoryClassLoader.java --- /**************************************************************************/ /* N I C E */ /* A high-level object-oriented research language */ /* (c) Daniel Bonniot 2003 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package nice.tools.util; /** A class loader that loads from a list of directories. @author Daniel Bonniot (bo...@us...) */ import java.io.*; public class DirectoryClassLoader extends java.lang.ClassLoader { /** * @param dirs directories to load from * @param parent the parent classloader */ public DirectoryClassLoader(File[] dirs, java.lang.ClassLoader parent) { super(parent); this.dirs = dirs; } private File[] dirs; /** * This is the method where the task of class loading * is delegated to our custom loader. * * @param name the name of the class * @return the resulting <code>Class</code> object * @exception ClassNotFoundException if the class could not be found */ protected Class findClass(String name) throws ClassNotFoundException { String path = name.replace('.', '/') + ".class"; for (int i = 0; i < dirs.length; i++) { Class res = findClass(name, new File(dirs[i], path)); if (res != null) return res; } throw new ClassNotFoundException(name); } private Class findClass(String name, File file) { FileInputStream fi = null; try { fi = new FileInputStream(file); } catch(FileNotFoundException e) { return null; } try { byte[] classBytes = new byte[fi.available()]; fi.read(classBytes); return defineClass(name, classBytes, 0, classBytes.length); } catch (IOException e) { return null; } finally { try { fi.close(); } catch (java.io.IOException e) {} } } } |
From: <bo...@us...> - 2003-11-28 00:58:09
|
Update of /cvsroot/nice/Nice In directory sc8-pr-cvs1:/tmp/cvs-serv26656 Modified Files: LICENSE Log Message: Made clear that Nice is distributed under the GPL, with some parts under GPL + linking exception. Converted to Unix line ending. Index: LICENSE =================================================================== RCS file: /cvsroot/nice/Nice/LICENSE,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** LICENSE 18 Jul 2000 13:27:55 -0000 1.1 --- LICENSE 28 Nov 2003 00:58:06 -0000 1.2 *************** *** 1,340 **** ! GNU GENERAL PUBLIC LICENSE ! Version 2, June 1991 ! ! Copyright (C) 1989, 1991 Free Software Foundation, Inc. ! 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! Everyone is permitted to copy and distribute verbatim copies ! of this license document, but changing it is not allowed. ! ! Preamble ! ! The licenses for most software are designed to take away your ! freedom to share and change it. By contrast, the GNU General Public ! License is intended to guarantee your freedom to share and change free ! software--to make sure the software is free for all its users. This ! General Public License applies to most of the Free Software ! Foundation's software and to any other program whose authors commit to ! using it. (Some other Free Software Foundation software is covered by ! the GNU Library General Public License instead.) You can apply it to ! your programs, too. ! ! When we speak of free software, we are referring to freedom, not ! price. Our General Public Licenses are designed to make sure that you ! have the freedom to distribute copies of free software (and charge for ! this service if you wish), that you receive source code or can get it ! if you want it, that you can change the software or use pieces of it ! in new free programs; and that you know you can do these things. ! ! To protect your rights, we need to make restrictions that forbid ! anyone to deny you these rights or to ask you to surrender the rights. ! These restrictions translate to certain responsibilities for you if you ! distribute copies of the software, or if you modify it. ! ! For example, if you distribute copies of such a program, whether ! gratis or for a fee, you must give the recipients all the rights that ! you have. You must make sure that they, too, receive or can get the ! source code. And you must show them these terms so they know their ! rights. ! ! We protect your rights with two steps: (1) copyright the software, and ! (2) offer you this license which gives you legal permission to copy, ! distribute and/or modify the software. ! ! Also, for each author's protection and ours, we want to make certain ! that everyone understands that there is no warranty for this free ! software. If the software is modified by someone else and passed on, we ! want its recipients to know that what they have is not the original, so ! that any problems introduced by others will not reflect on the original ! authors' reputations. ! ! Finally, any free program is threatened constantly by software ! patents. We wish to avoid the danger that redistributors of a free ! program will individually obtain patent licenses, in effect making the ! program proprietary. To prevent this, we have made it clear that any ! patent must be licensed for everyone's free use or not licensed at all. ! ! The precise terms and conditions for copying, distribution and ! modification follow. ! ! GNU GENERAL PUBLIC LICENSE ! TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ! ! 0. This License applies to any program or other work which contains ! a notice placed by the copyright holder saying it may be distributed ! under the terms of this General Public License. The "Program", below, ! refers to any such program or work, and a "work based on the Program" ! means either the Program or any derivative work under copyright law: ! that is to say, a work containing the Program or a portion of it, ! either verbatim or with modifications and/or translated into another ! language. (Hereinafter, translation is included without limitation in ! the term "modification".) Each licensee is addressed as "you". ! ! Activities other than copying, distribution and modification are not ! covered by this License; they are outside its scope. The act of ! running the Program is not restricted, and the output from the Program ! is covered only if its contents constitute a work based on the ! Program (independent of having been made by running the Program). ! Whether that is true depends on what the Program does. ! ! 1. You may copy and distribute verbatim copies of the Program's ! source code as you receive it, in any medium, provided that you ! conspicuously and appropriately publish on each copy an appropriate ! copyright notice and disclaimer of warranty; keep intact all the ! notices that refer to this License and to the absence of any warranty; ! and give any other recipients of the Program a copy of this License ! along with the Program. ! ! You may charge a fee for the physical act of transferring a copy, and ! you may at your option offer warranty protection in exchange for a fee. ! ! 2. You may modify your copy or copies of the Program or any portion ! of it, thus forming a work based on the Program, and copy and ! distribute such modifications or work under the terms of Section 1 ! above, provided that you also meet all of these conditions: ! ! a) You must cause the modified files to carry prominent notices ! stating that you changed the files and the date of any change. ! ! b) You must cause any work that you distribute or publish, that in ! whole or in part contains or is derived from the Program or any ! part thereof, to be licensed as a whole at no charge to all third ! parties under the terms of this License. ! ! c) If the modified program normally reads commands interactively ! when run, you must cause it, when started running for such ! interactive use in the most ordinary way, to print or display an ! announcement including an appropriate copyright notice and a ! notice that there is no warranty (or else, saying that you provide ! a warranty) and that users may redistribute the program under ! these conditions, and telling the user how to view a copy of this ! License. (Exception: if the Program itself is interactive but ! does not normally print such an announcement, your work based on ! the Program is not required to print an announcement.) ! ! These requirements apply to the modified work as a whole. If ! identifiable sections of that work are not derived from the Program, ! and can be reasonably considered independent and separate works in ! themselves, then this License, and its terms, do not apply to those ! sections when you distribute them as separate works. But when you ! distribute the same sections as part of a whole which is a work based ! on the Program, the distribution of the whole must be on the terms of ! this License, whose permissions for other licensees extend to the ! entire whole, and thus to each and every part regardless of who wrote it. ! ! Thus, it is not the intent of this section to claim rights or contest ! your rights to work written entirely by you; rather, the intent is to ! exercise the right to control the distribution of derivative or ! collective works based on the Program. ! ! In addition, mere aggregation of another work not based on the Program ! with the Program (or with a work based on the Program) on a volume of ! a storage or distribution medium does not bring the other work under ! the scope of this License. ! ! 3. You may copy and distribute the Program (or a work based on it, ! under Section 2) in object code or executable form under the terms of ! Sections 1 and 2 above provided that you also do one of the following: ! ! a) Accompany it with the complete corresponding machine-readable ! source code, which must be distributed under the terms of Sections ! 1 and 2 above on a medium customarily used for software interchange; or, ! ! b) Accompany it with a written offer, valid for at least three ! years, to give any third party, for a charge no more than your ! cost of physically performing source distribution, a complete ! machine-readable copy of the corresponding source code, to be ! distributed under the terms of Sections 1 and 2 above on a medium ! customarily used for software interchange; or, ! ! c) Accompany it with the information you received as to the offer ! to distribute corresponding source code. (This alternative is ! allowed only for noncommercial distribution and only if you ! received the program in object code or executable form with such ! an offer, in accord with Subsection b above.) ! ! The source code for a work means the preferred form of the work for ! making modifications to it. For an executable work, complete source ! code means all the source code for all modules it contains, plus any ! associated interface definition files, plus the scripts used to ! control compilation and installation of the executable. However, as a ! special exception, the source code distributed need not include ! anything that is normally distributed (in either source or binary ! form) with the major components (compiler, kernel, and so on) of the ! operating system on which the executable runs, unless that component ! itself accompanies the executable. ! ! If distribution of executable or object code is made by offering ! access to copy from a designated place, then offering equivalent ! access to copy the source code from the same place counts as ! distribution of the source code, even though third parties are not ! compelled to copy the source along with the object code. ! ! 4. You may not copy, modify, sublicense, or distribute the Program ! except as expressly provided under this License. Any attempt ! otherwise to copy, modify, sublicense or distribute the Program is ! void, and will automatically terminate your rights under this License. ! However, parties who have received copies, or rights, from you under ! this License will not have their licenses terminated so long as such ! parties remain in full compliance. ! ! 5. You are not required to accept this License, since you have not ! signed it. However, nothing else grants you permission to modify or ! distribute the Program or its derivative works. These actions are ! prohibited by law if you do not accept this License. Therefore, by ! modifying or distributing the Program (or any work based on the ! Program), you indicate your acceptance of this License to do so, and ! all its terms and conditions for copying, distributing or modifying ! the Program or works based on it. ! ! 6. Each time you redistribute the Program (or any work based on the ! Program), the recipient automatically receives a license from the ! original licensor to copy, distribute or modify the Program subject to ! these terms and conditions. You may not impose any further ! restrictions on the recipients' exercise of the rights granted herein. ! You are not responsible for enforcing compliance by third parties to ! this License. ! ! 7. If, as a consequence of a court judgment or allegation of patent ! infringement or for any other reason (not limited to patent issues), ! conditions are imposed on you (whether by court order, agreement or ! otherwise) that contradict the conditions of this License, they do not ! excuse you from the conditions of this License. If you cannot ! distribute so as to satisfy simultaneously your obligations under this ! License and any other pertinent obligations, then as a consequence you ! may not distribute the Program at all. For example, if a patent ! license would not permit royalty-free redistribution of the Program by ! all those who receive copies directly or indirectly through you, then ! the only way you could satisfy both it and this License would be to ! refrain entirely from distribution of the Program. ! ! If any portion of this section is held invalid or unenforceable under ! any particular circumstance, the balance of the section is intended to ! apply and the section as a whole is intended to apply in other ! circumstances. ! ! It is not the purpose of this section to induce you to infringe any ! patents or other property right claims or to contest validity of any ! such claims; this section has the sole purpose of protecting the ! integrity of the free software distribution system, which is ! implemented by public license practices. Many people have made ! generous contributions to the wide range of software distributed ! through that system in reliance on consistent application of that ! system; it is up to the author/donor to decide if he or she is willing ! to distribute software through any other system and a licensee cannot ! impose that choice. ! ! This section is intended to make thoroughly clear what is believed to ! be a consequence of the rest of this License. ! ! 8. If the distribution and/or use of the Program is restricted in ! certain countries either by patents or by copyrighted interfaces, the ! original copyright holder who places the Program under this License ! may add an explicit geographical distribution limitation excluding ! those countries, so that distribution is permitted only in or among ! countries not thus excluded. In such case, this License incorporates ! the limitation as if written in the body of this License. ! ! 9. The Free Software Foundation may publish revised and/or new versions ! of the General Public License from time to time. Such new versions will ! be similar in spirit to the present version, but may differ in detail to ! address new problems or concerns. ! ! Each version is given a distinguishing version number. If the Program ! specifies a version number of this License which applies to it and "any ! later version", you have the option of following the terms and conditions ! either of that version or of any later version published by the Free ! Software Foundation. If the Program does not specify a version number of ! this License, you may choose any version ever published by the Free Software ! Foundation. ! ! 10. If you wish to incorporate parts of the Program into other free ! programs whose distribution conditions are different, write to the author ! to ask for permission. For software which is copyrighted by the Free ! Software Foundation, write to the Free Software Foundation; we sometimes ! make exceptions for this. Our decision will be guided by the two goals ! of preserving the free status of all derivatives of our free software and ! of promoting the sharing and reuse of software generally. ! ! NO WARRANTY ! ! 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY ! FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN ! OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES ! PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED ! OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ! MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS ! TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE ! PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, ! REPAIR OR CORRECTION. ! ! 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING ! WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR ! REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, ! INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING ! OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED ! TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY ! YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER ! PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE ! POSSIBILITY OF SUCH DAMAGES. ! ! END OF TERMS AND CONDITIONS ! ! How to Apply These Terms to Your New Programs ! ! If you develop a new program, and you want it to be of the greatest ! possible use to the public, the best way to achieve this is to make it ! free software which everyone can redistribute and change under these terms. ! ! To do so, attach the following notices to the program. It is safest ! to attach them to the start of each source file to most effectively ! convey the exclusion of warranty; and each file should have at least ! the "copyright" line and a pointer to where the full notice is found. ! ! <one line to give the program's name and a brief idea of what it does.> ! Copyright (C) 19yy <name of author> ! ! This program is free software; you can redistribute it and/or modify ! it under the terms of the GNU General Public License as published by ! the Free Software Foundation; either version 2 of the License, or ! (at your option) any later version. ! ! This program is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! GNU General Public License for more details. ! ! You should have received a copy of the GNU General Public License ! along with this program; if not, write to the Free Software ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! ! Also add information on how to contact you by electronic and paper mail. ! ! If the program is interactive, make it output a short notice like this ! when it starts in an interactive mode: ! ! Gnomovision version 69, Copyright (C) 19yy name of author ! Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. ! This is free software, and you are welcome to redistribute it ! under certain conditions; type `show c' for details. ! ! The hypothetical commands `show w' and `show c' should show the appropriate ! parts of the General Public License. Of course, the commands you use may ! be called something other than `show w' and `show c'; they could even be ! mouse-clicks or menu items--whatever suits your program. ! ! You should also get your employer (if you work as a programmer) or your ! school, if any, to sign a "copyright disclaimer" for the program, if ! necessary. Here is a sample; alter the names: ! ! Yoyodyne, Inc., hereby disclaims all copyright interest in the program ! `Gnomovision' (which makes passes at compilers) written by James Hacker. ! ! <signature of Ty Coon>, 1 April 1989 ! Ty Coon, President of Vice ! ! This General Public License does not permit incorporating your program into ! proprietary programs. If your program is a subroutine library, you may ! consider it more useful to permit linking proprietary applications with the ! library. If this is what you want to do, use the GNU Library General ! Public License instead of this License. --- 1,353 ---- ! Nice, a high-level object-oriented research programming language. ! Copyright (C) 2003 Daniel Bonniot ! ! This program is free software; you can redistribute it and/or ! modify it under the terms of the GNU General Public License ! as published by the Free Software Foundation; either version 2 ! of the License, or (at your option) any later version. ! ! The elements of the compiler that are needed to run generated programs ! additionally include a linking exception to allow Nice programs to be ! distributed under any license terms. This exception is specified at the ! top of each applicable source file. ! ! GNU GENERAL PUBLIC LICENSE ! Version 2, June 1991 ! ! Copyright (C) 1989, 1991 Free Software Foundation, Inc. ! 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! Everyone is permitted to copy and distribute verbatim copies ! of this license document, but changing it is not allowed. ! ! Preamble ! ! The licenses for most software are designed to take away your ! freedom to share and change it. By contrast, the GNU General Public ! License is intended to guarantee your freedom to share and change free ! software--to make sure the software is free for all its users. This ! General Public License applies to most of the Free Software ! Foundation's software and to any other program whose authors commit to ! using it. (Some other Free Software Foundation software is covered by ! the GNU Library General Public License instead.) You can apply it to ! your programs, too. ! ! When we speak of free software, we are referring to freedom, not ! price. Our General Public Licenses are designed to make sure that you ! have the freedom to distribute copies of free software (and charge for ! this service if you wish), that you receive source code or can get it ! if you want it, that you can change the software or use pieces of it ! in new free programs; and that you know you can do these things. ! ! To protect your rights, we need to make restrictions that forbid ! anyone to deny you these rights or to ask you to surrender the rights. ! These restrictions translate to certain responsibilities for you if you ! distribute copies of the software, or if you modify it. ! ! For example, if you distribute copies of such a program, whether ! gratis or for a fee, you must give the recipients all the rights that ! you have. You must make sure that they, too, receive or can get the ! source code. And you must show them these terms so they know their ! rights. ! ! We protect your rights with two steps: (1) copyright the software, and ! (2) offer you this license which gives you legal permission to copy, ! distribute and/or modify the software. ! ! Also, for each author's protection and ours, we want to make certain ! that everyone understands that there is no warranty for this free ! software. If the software is modified by someone else and passed on, we ! want its recipients to know that what they have is not the original, so ! that any problems introduced by others will not reflect on the original ! authors' reputations. ! ! Finally, any free program is threatened constantly by software ! patents. We wish to avoid the danger that redistributors of a free ! program will individually obtain patent licenses, in effect making the ! program proprietary. To prevent this, we have made it clear that any ! patent must be licensed for everyone's free use or not licensed at all. ! ! The precise terms and conditions for copying, distribution and ! modification follow. ! ! GNU GENERAL PUBLIC LICENSE ! TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ! ! 0. This License applies to any program or other work which contains ! a notice placed by the copyright holder saying it may be distributed ! under the terms of this General Public License. The "Program", below, ! refers to any such program or work, and a "work based on the Program" ! means either the Program or any derivative work under copyright law: ! that is to say, a work containing the Program or a portion of it, ! either verbatim or with modifications and/or translated into another ! language. (Hereinafter, translation is included without limitation in ! the term "modification".) Each licensee is addressed as "you". ! ! Activities other than copying, distribution and modification are not ! covered by this License; they are outside its scope. The act of ! running the Program is not restricted, and the output from the Program ! is covered only if its contents constitute a work based on the ! Program (independent of having been made by running the Program). ! Whether that is true depends on what the Program does. ! ! 1. You may copy and distribute verbatim copies of the Program's ! source code as you receive it, in any medium, provided that you ! conspicuously and appropriately publish on each copy an appropriate ! copyright notice and disclaimer of warranty; keep intact all the ! notices that refer to this License and to the absence of any warranty; ! and give any other recipients of the Program a copy of this License ! along with the Program. ! ! You may charge a fee for the physical act of transferring a copy, and ! you may at your option offer warranty protection in exchange for a fee. ! ! 2. You may modify your copy or copies of the Program or any portion ! of it, thus forming a work based on the Program, and copy and ! distribute such modifications or work under the terms of Section 1 ! above, provided that you also meet all of these conditions: ! ! a) You must cause the modified files to carry prominent notices ! stating that you changed the files and the date of any change. ! ! b) You must cause any work that you distribute or publish, that in ! whole or in part contains or is derived from the Program or any ! part thereof, to be licensed as a whole at no charge to all third ! parties under the terms of this License. ! ! c) If the modified program normally reads commands interactively ! when run, you must cause it, when started running for such ! interactive use in the most ordinary way, to print or display an ! announcement including an appropriate copyright notice and a ! notice that there is no warranty (or else, saying that you provide ! a warranty) and that users may redistribute the program under ! these conditions, and telling the user how to view a copy of this ! License. (Exception: if the Program itself is interactive but ! does not normally print such an announcement, your work based on ! the Program is not required to print an announcement.) ! ! These requirements apply to the modified work as a whole. If ! identifiable sections of that work are not derived from the Program, ! and can be reasonably considered independent and separate works in ! themselves, then this License, and its terms, do not apply to those ! sections when you distribute them as separate works. But when you ! distribute the same sections as part of a whole which is a work based ! on the Program, the distribution of the whole must be on the terms of ! this License, whose permissions for other licensees extend to the ! entire whole, and thus to each and every part regardless of who wrote it. ! ! Thus, it is not the intent of this section to claim rights or contest ! your rights to work written entirely by you; rather, the intent is to ! exercise the right to control the distribution of derivative or ! collective works based on the Program. ! ! In addition, mere aggregation of another work not based on the Program ! with the Program (or with a work based on the Program) on a volume of ! a storage or distribution medium does not bring the other work under ! the scope of this License. ! ! 3. You may copy and distribute the Program (or a work based on it, ! under Section 2) in object code or executable form under the terms of ! Sections 1 and 2 above provided that you also do one of the following: ! ! a) Accompany it with the complete corresponding machine-readable ! source code, which must be distributed under the terms of Sections ! 1 and 2 above on a medium customarily used for software interchange; or, ! ! b) Accompany it with a written offer, valid for at least three ! years, to give any third party, for a charge no more than your ! cost of physically performing source distribution, a complete ! machine-readable copy of the corresponding source code, to be ! distributed under the terms of Sections 1 and 2 above on a medium ! customarily used for software interchange; or, ! ! c) Accompany it with the information you received as to the offer ! to distribute corresponding source code. (This alternative is ! allowed only for noncommercial distribution and only if you ! received the program in object code or executable form with such ! an offer, in accord with Subsection b above.) ! ! The source code for a work means the preferred form of the work for ! making modifications to it. For an executable work, complete source ! code means all the source code for all modules it contains, plus any ! associated interface definition files, plus the scripts used to ! control compilation and installation of the executable. However, as a ! special exception, the source code distributed need not include ! anything that is normally distributed (in either source or binary ! form) with the major components (compiler, kernel, and so on) of the ! operating system on which the executable runs, unless that component ! itself accompanies the executable. ! ! If distribution of executable or object code is made by offering ! access to copy from a designated place, then offering equivalent ! access to copy the source code from the same place counts as ! distribution of the source code, even though third parties are not ! compelled to copy the source along with the object code. ! ! 4. You may not copy, modify, sublicense, or distribute the Program ! except as expressly provided under this License. Any attempt ! otherwise to copy, modify, sublicense or distribute the Program is ! void, and will automatically terminate your rights under this License. ! However, parties who have received copies, or rights, from you under ! this License will not have their licenses terminated so long as such ! parties remain in full compliance. ! ! 5. You are not required to accept this License, since you have not ! signed it. However, nothing else grants you permission to modify or ! distribute the Program or its derivative works. These actions are ! prohibited by law if you do not accept this License. Therefore, by ! modifying or distributing the Program (or any work based on the ! Program), you indicate your acceptance of this License to do so, and ! all its terms and conditions for copying, distributing or modifying ! the Program or works based on it. ! ! 6. Each time you redistribute the Program (or any work based on the ! Program), the recipient automatically receives a license from the ! original licensor to copy, distribute or modify the Program subject to ! these terms and conditions. You may not impose any further ! restrictions on the recipients' exercise of the rights granted herein. ! You are not responsible for enforcing compliance by third parties to ! this License. ! ! 7. If, as a consequence of a court judgment or allegation of patent ! infringement or for any other reason (not limited to patent issues), ! conditions are imposed on you (whether by court order, agreement or ! otherwise) that contradict the conditions of this License, they do not ! excuse you from the conditions of this License. If you cannot ! distribute so as to satisfy simultaneously your obligations under this ! License and any other pertinent obligations, then as a consequence you ! may not distribute the Program at all. For example, if a patent ! license would not permit royalty-free redistribution of the Program by ! all those who receive copies directly or indirectly through you, then ! the only way you could satisfy both it and this License would be to ! refrain entirely from distribution of the Program. ! ! If any portion of this section is held invalid or unenforceable under ! any particular circumstance, the balance of the section is intended to ! apply and the section as a whole is intended to apply in other ! circumstances. ! ! It is not the purpose of this section to induce you to infringe any ! patents or other property right claims or to contest validity of any ! such claims; this section has the sole purpose of protecting the ! integrity of the free software distribution system, which is ! implemented by public license practices. Many people have made ! generous contributions to the wide range of software distributed ! through that system in reliance on consistent application of that ! system; it is up to the author/donor to decide if he or she is willing ! to distribute software through any other system and a licensee cannot ! impose that choice. ! ! This section is intended to make thoroughly clear what is believed to ! be a consequence of the rest of this License. ! ! 8. If the distribution and/or use of the Program is restricted in ! certain countries either by patents or by copyrighted interfaces, the ! original copyright holder who places the Program under this License ! may add an explicit geographical distribution limitation excluding ! those countries, so that distribution is permitted only in or among ! countries not thus excluded. In such case, this License incorporates ! the limitation as if written in the body of this License. ! ! 9. The Free Software Foundation may publish revised and/or new versions ! of the General Public License from time to time. Such new versions will ! be similar in spirit to the present version, but may differ in detail to ! address new problems or concerns. ! ! Each version is given a distinguishing version number. If the Program ! specifies a version number of this License which applies to it and "any ! later version", you have the option of following the terms and conditions ! either of that version or of any later version published by the Free ! Software Foundation. If the Program does not specify a version number of ! this License, you may choose any version ever published by the Free Software ! Foundation. ! ! 10. If you wish to incorporate parts of the Program into other free ! programs whose distribution conditions are different, write to the author ! to ask for permission. For software which is copyrighted by the Free ! Software Foundation, write to the Free Software Foundation; we sometimes ! make exceptions for this. Our decision will be guided by the two goals ! of preserving the free status of all derivatives of our free software and ! of promoting the sharing and reuse of software generally. ! ! NO WARRANTY ! ! 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY ! FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN ! OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES ! PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED ! OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ! MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS ! TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE ! PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, ! REPAIR OR CORRECTION. ! ! 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING ! WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR ! REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, ! INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING ! OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED ! TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY ! YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER ! PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE ! POSSIBILITY OF SUCH DAMAGES. ! ! END OF TERMS AND CONDITIONS ! ! How to Apply These Terms to Your New Programs ! ! If you develop a new program, and you want it to be of the greatest ! possible use to the public, the best way to achieve this is to make it ! free software which everyone can redistribute and change under these terms. ! ! To do so, attach the following notices to the program. It is safest ! to attach them to the start of each source file to most effectively ! convey the exclusion of warranty; and each file should have at least ! the "copyright" line and a pointer to where the full notice is found. ! ! <one line to give the program's name and a brief idea of what it does.> ! Copyright (C) 19yy <name of author> ! ! This program is free software; you can redistribute it and/or modify ! it under the terms of the GNU General Public License as published by ! the Free Software Foundation; either version 2 of the License, or ! (at your option) any later version. ! ! This program is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! GNU General Public License for more details. ! ! You should have received a copy of the GNU General Public License ! along with this program; if not, write to the Free Software ! Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! ! ! Also add information on how to contact you by electronic and paper mail. ! ! If the program is interactive, make it output a short notice like this ! when it starts in an interactive mode: ! ! Gnomovision version 69, Copyright (C) 19yy name of author ! Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. ! This is free software, and you are welcome to redistribute it ! under certain conditions; type `show c' for details. ! ! The hypothetical commands `show w' and `show c' should show the appropriate ! parts of the General Public License. Of course, the commands you use may ! be called something other than `show w' and `show c'; they could even be ! mouse-clicks or menu items--whatever suits your program. ! ! You should also get your employer (if you work as a programmer) or your ! school, if any, to sign a "copyright disclaimer" for the program, if ! necessary. Here is a sample; alter the names: ! ! Yoyodyne, Inc., hereby disclaims all copyright interest in the program ! `Gnomovision' (which makes passes at compilers) written by James Hacker. ! ! <signature of Ty Coon>, 1 April 1989 ! Ty Coon, President of Vice ! ! This General Public License does not permit incorporating your program into ! proprietary programs. If your program is a subroutine library, you may ! consider it more useful to permit linking proprietary applications with the ! library. If this is what you want to do, use the GNU Library General ! Public License instead of this License. |
From: <ar...@us...> - 2003-11-27 23:37:12
|
Update of /cvsroot/nice/Nice/testsuite/compiler/enums In directory sc8-pr-cvs1:/tmp/cvs-serv12309/F:/nice/testsuite/compiler/enums Modified Files: enum.testsuite serialization.testsuite Log Message: Serialization works now for enums and added a family method to enums. Index: enum.testsuite =================================================================== RCS file: /cvsroot/nice/Nice/testsuite/compiler/enums/enum.testsuite,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** enum.testsuite 6 Jul 2003 23:25:37 -0000 1.3 --- enum.testsuite 27 Nov 2003 23:37:08 -0000 1.4 *************** *** 69,70 **** --- 69,79 ---- /// Toplevel enum Color {red, blue, green} + + /// PASS + List<Color> elems = red.family(); + assert elems.size() == 3; + assert elems.contains(red); + assert elems.contains(blue); + assert elems.contains(green); + /// Toplevel + enum Color {red, blue, green} Index: serialization.testsuite =================================================================== RCS file: /cvsroot/nice/Nice/testsuite/compiler/enums/serialization.testsuite,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** serialization.testsuite 21 Jun 2003 09:07:59 -0000 1.1 --- serialization.testsuite 27 Nov 2003 23:37:08 -0000 1.2 *************** *** 1,12 **** ! /// PASS bug ! let filename = "color.ser"; ! ! let outf = new FileOutputStream(filename); ! let outs = new ObjectOutputStream(outf); outs.writeObject(red); ! outf.close(); ! ! let inf = new FileInputStream(filename); ! let ins = new ObjectInputStream(inf); let Color color = ins.readObject(); assert color == red; --- 1,9 ---- ! /// PASS ! let outb = new ByteArrayOutputStream(); ! let outs = new ObjectOutputStream(outb); outs.writeObject(red); ! let store = outb.toByteArray(); ! let inb = new ByteArrayInputStream(store); ! let ins = new ObjectInputStream(inb); let Color color = ins.readObject(); assert color == red; |
From: <ar...@us...> - 2003-11-27 23:37:11
|
Update of /cvsroot/nice/Nice/stdlib/nice/lang In directory sc8-pr-cvs1:/tmp/cvs-serv12309/F:/nice/stdlib/nice/lang Modified Files: enum.nice Log Message: Serialization works now for enums and added a family method to enums. Index: enum.nice =================================================================== RCS file: /cvsroot/nice/Nice/stdlib/nice/lang/enum.nice,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** enum.nice 19 Nov 2003 16:04:45 -0000 1.4 --- enum.nice 27 Nov 2003 23:37:08 -0000 1.5 *************** *** 17,22 **** package nice.lang; ! public class Enum { public final int ordinal; --- 17,23 ---- package nice.lang; + import java.io.*; ! public abstract class Enum implements Serializable { public final int ordinal; *************** *** 25,27 **** --- 26,39 ---- hashCode() = ordinal; toString() = name; + + Object readResolve() + { + for (elem : this.family()) + if (this.name.equals(elem.name)) + return object(elem); + + throw new InvalidObjectException("unknown enum element"); + } } + + <Enum T> List<T> family(T element); |
From: <ar...@us...> - 2003-11-27 23:37:11
|
Update of /cvsroot/nice/Nice/src/bossa/parser In directory sc8-pr-cvs1:/tmp/cvs-serv12309/F:/nice/src/bossa/parser Modified Files: Parser.jj Log Message: Serialization works now for enums and added a family method to enums. Index: Parser.jj =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/parser/Parser.jj,v retrieving revision 1.216 retrieving revision 1.217 diff -C2 -d -r1.216 -r1.217 *** Parser.jj 24 Nov 2003 17:27:22 -0000 1.216 --- Parser.jj 27 Nov 2003 23:37:08 -0000 1.217 *************** *** 1155,1159 **** } ! EnumDefinition enumDefinition(): { LocatedString name, elem; --- 1155,1159 ---- } ! EnumDefinition enumDefinition(List definitions): { LocatedString name, elem; *************** *** 1165,1169 **** ( "," elem =ident() { elements.add(elem); } )+ "}" ! { return new EnumDefinition(name, elements); } } --- 1165,1169 ---- ( "," elem =ident() { elements.add(elem); } )+ "}" ! { return new EnumDefinition(name, elements, definitions); } } *************** *** 1457,1461 **** [ "public" | "private" ] ( res=globalVariable() ! | res=enumDefinition() | { Constraint cst; } cst = constraint() ( --- 1457,1461 ---- [ "public" | "private" ] ( res=globalVariable() ! | res=enumDefinition(definitions) | { Constraint cst; } cst = constraint() ( |
From: <ar...@us...> - 2003-11-27 23:37:11
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv12309/F:/nice/src/bossa/syntax Modified Files: EnumDefinition.java Log Message: Serialization works now for enums and added a family method to enums. Index: EnumDefinition.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/EnumDefinition.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** EnumDefinition.java 31 Jul 2003 18:45:35 -0000 1.5 --- EnumDefinition.java 27 Nov 2003 23:37:08 -0000 1.6 *************** *** 26,30 **** public class EnumDefinition extends Definition { ! public EnumDefinition(LocatedString name, List/*LocatedString*/ elements) { super(name, Node.global); --- 26,30 ---- public class EnumDefinition extends Definition { ! public EnumDefinition(LocatedString name, List/*LocatedString*/ elements, List globalDefs) { super(name, Node.global); *************** *** 37,40 **** --- 37,55 ---- impl.setFields(null); impl.setOverrides(null); + + if (! inInterfaceFile()) + { + // create the method implementation of family() + List exps = new LinkedList(); + for (Iterator it = elements.iterator(); it.hasNext(); ) + exps.add(new IdentExp((LocatedString)it.next())); + + Statement body = new ReturnStmt(new LiteralArrayExp(exps), true); + LocatedString mName = new LocatedString("family", bossa.util.Location.nowhere()); + Definition mBodyDef = new MethodBodyDefinition(impl, mName, null, + new LinkedList(), body); + globalDefs.add(mBodyDef); + } + classDef.setImplementation(impl); *************** *** 53,57 **** } addChildren(symbols); ! } --- 68,72 ---- } addChildren(symbols); ! } |
From: <bo...@us...> - 2003-11-27 22:46:02
|
Update of /cvsroot/nice/Nice/src/nice/tools/testsuite In directory sc8-pr-cvs1:/tmp/cvs-serv4323/src/nice/tools/testsuite Modified Files: TestNice.java TestCase.java Removed Files: TestSuiteClassLoader.java Log Message: In the testengine, load classes in priority from the generated ones instead of the runtime, in case they are more precise (new nice.lang.dispatch, for instance). Index: TestNice.java =================================================================== RCS file: /cvsroot/nice/Nice/src/nice/tools/testsuite/TestNice.java,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** TestNice.java 13 Jun 2003 22:45:28 -0000 1.26 --- TestNice.java 27 Nov 2003 22:45:59 -0000 1.27 *************** *** 16,19 **** --- 16,20 ---- import java.io.*; import java.util.*; + import java.net.URL; import nice.tools.testsuite.output.*; *************** *** 493,496 **** --- 494,521 ---- } + + /** + @return the classloader used to run generated code. + */ + static ClassLoader getClassLoader() { + ClassLoader classLoader = null; + + try { + // This is normally where the compiled classes are in the dev tree. + if (_runtime == null) + _runtime = "classes"; + + URL[] urls = { + new URL("file://" + getTempFolder().getAbsolutePath() + "/"), + new URL("file://" + new File(getRuntime()).getAbsolutePath() + "/") + }; + classLoader = new java.net.URLClassLoader(urls, null); + } + catch(java.net.MalformedURLException ex) { + throw new Error(ex.toString()); + } + + return classLoader; + } /** Index: TestCase.java =================================================================== RCS file: /cvsroot/nice/Nice/src/nice/tools/testsuite/TestCase.java,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** TestCase.java 11 Jun 2003 22:24:05 -0000 1.25 --- TestCase.java 27 Nov 2003 22:45:59 -0000 1.26 *************** *** 357,363 **** { try { ! Class c = Class.forName(sourceFile.getPackage() + ".fun", ! true, ! new TestSuiteClassLoader(this.getClass().getClassLoader())); Class[] parameterTypes = new Class[] {String[].class}; Method m = c.getMethod("main", parameterTypes); --- 357,364 ---- { try { ! Class c = Class.forName ! (sourceFile.getPackage() + ".fun", ! true, ! TestNice.getClassLoader()); Class[] parameterTypes = new Class[] {String[].class}; Method m = c.getMethod("main", parameterTypes); --- TestSuiteClassLoader.java DELETED --- |
From: <bo...@us...> - 2003-11-27 21:02:16
|
Update of /cvsroot/nice/Nice/src/gnu/expr In directory sc8-pr-cvs1:/tmp/cvs-serv16784/src/gnu/expr Modified Files: ThisExp.java LambdaExp.java FindCapturedVars.java ConstructorExp.java Log Message: Allow 'this' to be captured in initializers. Index: ThisExp.java =================================================================== RCS file: /cvsroot/nice/Nice/src/gnu/expr/ThisExp.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ThisExp.java 30 Oct 2001 15:16:50 -0000 1.2 --- ThisExp.java 27 Nov 2003 21:02:13 -0000 1.3 *************** *** 34,39 **** public void compile (Compilation comp, Target target) { ! CodeAttr code = comp.getCode(); ! code.emitPushThis(); } --- 34,42 ---- public void compile (Compilation comp, Target target) { ! // If we have been captured, load ourselve the hard way. ! if (binding != null && binding.field != null) ! binding.load(comp); ! else ! comp.getCode().emitPushThis(); } Index: LambdaExp.java =================================================================== RCS file: /cvsroot/nice/Nice/src/gnu/expr/LambdaExp.java,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** LambdaExp.java 24 Nov 2003 14:47:49 -0000 1.21 --- LambdaExp.java 27 Nov 2003 21:02:13 -0000 1.22 *************** *** 986,990 **** ClassExp outerClass = outerClass(); if (outerClass != null) ! frameType = new ClassType(comp.generateUniqueName(outerClass.getName()+"$" + getName())); else frameType = new ClassType(comp.generateClassName("frame")); --- 986,1002 ---- ClassExp outerClass = outerClass(); if (outerClass != null) ! { ! String name = getName(); ! if (name == null) ! name = "lambda"; ! // At least for constructors ("<init>") we need to make sure ! // the name is valid. ! name = Compilation.mangleName(name); ! // Use the outer class as a prefix name. ! name = outerClass.getName() + "$" + name; ! // Make sure the name is unique. ! name = comp.generateUniqueName(name); ! frameType = new ClassType(name); ! } else frameType = new ClassType(comp.generateClassName("frame")); Index: FindCapturedVars.java =================================================================== RCS file: /cvsroot/nice/Nice/src/gnu/expr/FindCapturedVars.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** FindCapturedVars.java 2 Sep 2002 11:46:51 -0000 1.4 --- FindCapturedVars.java 27 Nov 2003 21:02:13 -0000 1.5 *************** *** 320,325 **** protected Expression walkThisExp (ThisExp exp) { ! // FIXME - not really right, but works in simple cases. ! if (false) getCurrentLambda ().setImportsLexVars(); return exp; } --- 320,326 ---- protected Expression walkThisExp (ThisExp exp) { ! // This can be captured like any other variable. ! if (exp.getBinding() != null) ! capture(exp.getBinding()); return exp; } Index: ConstructorExp.java =================================================================== RCS file: /cvsroot/nice/Nice/src/gnu/expr/ConstructorExp.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ConstructorExp.java 2 Sep 2002 16:11:53 -0000 1.2 --- ConstructorExp.java 27 Nov 2003 21:02:13 -0000 1.3 *************** *** 24,33 **** public class ConstructorExp extends LambdaExp { ! public ConstructorExp(ClassType classType) { ! this.classType = classType; } private ClassType classType; ClassType getClassType() { return classType; } --- 24,42 ---- public class ConstructorExp extends LambdaExp { ! public ConstructorExp(Declaration thisDecl) { ! this.thisDecl = thisDecl; ! this.classType = (ClassType) thisDecl.getType(); ! thisDecl.context = this; ! } ! ! public void setSuperCall(Expression superCall) ! { ! this.superCall = superCall; } + private Declaration thisDecl; private ClassType classType; + private Expression superCall; ClassType getClassType() { return classType; } *************** *** 55,58 **** --- 64,85 ---- ("<init>", args, Type.void_type, Access.PUBLIC); primMethods = new Method[] { method }; + } + + void enterFunction (Compilation comp) + { + // The super call has to come before anything else. + superCall.compile(comp, Target.Ignore); + + // Do the normal stuff. + super.enterFunction(comp); + + // Save 'this' if it is captured + if (thisDecl.field != null) + { + CodeAttr code = comp.getCode(); + thisDecl.loadOwningObject(comp); + code.emitPushThis(); + code.emitPutField(thisDecl.field); + } } } |
From: <bo...@us...> - 2003-11-27 21:02:16
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv16784/src/bossa/syntax Modified Files: Constructor.java Log Message: Allow 'this' to be captured in initializers. Index: Constructor.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/Constructor.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Constructor.java 26 Nov 2003 16:25:55 -0000 1.8 --- Constructor.java 27 Nov 2003 21:02:13 -0000 1.9 *************** *** 86,90 **** { ClassType thisType = (ClassType) javaReturnType(); ! Expression thisExp = new ThisExp(thisType); MonoSymbol[] fullArgs = parameters.getMonoSymbols(); --- 86,92 ---- { ClassType thisType = (ClassType) javaReturnType(); ! Declaration thisDecl = new Declaration("this"); ! thisDecl.setType(thisType); ! Expression thisExp = new ThisExp(thisDecl); MonoSymbol[] fullArgs = parameters.getMonoSymbols(); *************** *** 129,161 **** ConstructorExp lambda = Gen.createConstructor ! (thisType, argTypesArray, argsArray); ! ! Expression[] body = ! new Expression[1 + fields.length + classe.nbInitializers()]; ! ! body[0] = callSuper(thisExp, fullArgs, omitDefaults); ! ! final int superArgs = fullArgs.length - fields.length; ! ! for (int i = 0; i < fields.length; i++) ! { ! bossa.syntax.Expression value = fields[i].value; ! ! Expression fieldValue; ! if (!omitDefaults || value == null) ! // Use the provided parameter. ! fieldValue = fullArgs[superArgs + i].compile(); ! else ! // Use the default value. ! fieldValue = value.compile(); ! ! body[1 + i] = fields[i].method.compileAssign(thisExp, fieldValue); ! } ! ! classe.setThisExp(thisExp); ! for (int i = 0; i < classe.nbInitializers(); i++) ! body[1 + fields.length + i] = classe.compileInitializer(i); ! Gen.setMethodBody(lambda, new BeginExp(body)); classe.getClassExp().addMethod(lambda); --- 131,138 ---- ConstructorExp lambda = Gen.createConstructor ! (thisDecl, argTypesArray, argsArray); ! lambda.setSuperCall(callSuper(thisExp, fullArgs, omitDefaults)); ! Gen.setMethodBody(lambda, body(thisExp, fullArgs, omitDefaults)); classe.getClassExp().addMethod(lambda); *************** *** 186,189 **** --- 163,200 ---- return new ApplyExp(superExp, (Expression[]) superArgs.toArray(new Expression[superArgs.size()])); + } + + private Expression body(Expression thisExp, + MonoSymbol[] fullArgs, boolean omitDefaults) + { + int len = fields.length + classe.nbInitializers(); + + if (len == 0) + return QuoteExp.voidExp; + + Expression[] body = new Expression[len]; + + final int superArgs = fullArgs.length - fields.length; + + for (int i = 0; i < fields.length; i++) + { + bossa.syntax.Expression value = fields[i].value; + + Expression fieldValue; + if (!omitDefaults || value == null) + // Use the provided parameter. + fieldValue = fullArgs[superArgs + i].compile(); + else + // Use the default value. + fieldValue = value.compile(); + + body[i] = fields[i].method.compileAssign(thisExp, fieldValue); + } + + classe.setThisExp(thisExp); + for (int i = 0; i < classe.nbInitializers(); i++) + body[fields.length + i] = classe.compileInitializer(i); + + return new BeginExp(body); } |
From: <bo...@us...> - 2003-11-27 21:02:16
|
Update of /cvsroot/nice/Nice/src/nice/tools/code In directory sc8-pr-cvs1:/tmp/cvs-serv16784/src/nice/tools/code Modified Files: Gen.java Log Message: Allow 'this' to be captured in initializers. Index: Gen.java =================================================================== RCS file: /cvsroot/nice/Nice/src/nice/tools/code/Gen.java,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** Gen.java 17 Jun 2003 12:03:05 -0000 1.16 --- Gen.java 27 Nov 2003 21:02:13 -0000 1.17 *************** *** 133,140 **** public static ConstructorExp createConstructor ! (ClassType classType, Type[] argTypes, MonoSymbol[] args) { ! ConstructorExp res = new ConstructorExp(classType); ! createMethod(res, "<init>", argTypes, Type.void_type, args, true, false, true); return res; } --- 133,141 ---- public static ConstructorExp createConstructor ! (Declaration thisDecl, Type[] argTypes, MonoSymbol[] args) { ! ConstructorExp res = new ConstructorExp(thisDecl); ! createMethod(res, "<init>", argTypes, Type.void_type, args, ! true, false, true); return res; } |
From: <bo...@us...> - 2003-11-27 21:02:15
|
Update of /cvsroot/nice/Nice/testsuite/compiler/classes In directory sc8-pr-cvs1:/tmp/cvs-serv16784/testsuite/compiler/classes Modified Files: initializer.testsuite Log Message: Allow 'this' to be captured in initializers. Index: initializer.testsuite =================================================================== RCS file: /cvsroot/nice/Nice/testsuite/compiler/classes/initializer.testsuite,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** initializer.testsuite 27 Nov 2003 14:57:56 -0000 1.11 --- initializer.testsuite 27 Nov 2003 21:02:12 -0000 1.12 *************** *** 155,159 **** assert new A().x[0]; ! /// PASS bug /// package a /// Toplevel --- 155,159 ---- assert new A().x[0]; ! /// PASS /// package a /// Toplevel *************** *** 163,166 **** --- 163,167 ---- { void foo() { + // Implicit capture of 'this' inside an initializer x = true; } *************** *** 185,186 **** --- 186,201 ---- /// package b import a let x = new TestA(); + + /// PASS + // Capture of 'this' inside an initializer + new TestA(a: "ABC").b.equals("ABC"); + /// Toplevel + class TestA + { + String a; + String b = ""; + { + let f = (String l) => this; + b = f("").a; + } + } |
From: <bo...@us...> - 2003-11-27 15:23:14
|
Update of /cvsroot/nice/Nice/src/bossa/modules In directory sc8-pr-cvs1:/tmp/cvs-serv18693/src/bossa/modules Modified Files: Package.java Log Message: Allow AST and compiled code to be garbage collected earlier, which significantly reduces peak memory usage. Index: Package.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/modules/Package.java,v retrieving revision 1.105 retrieving revision 1.106 diff -C2 -d -r1.105 -r1.106 *** Package.java 27 Nov 2003 14:57:56 -0000 1.105 --- Package.java 27 Nov 2003 15:23:11 -0000 1.106 *************** *** 401,404 **** --- 401,408 ---- res = thisPkg; + // Allow memory to be reclaimed early. + thisPkg = null; + ast = null; + for (Iterator i = getImports().iterator(); i.hasNext();) res = ((Package) i.next()).compilePackages(res); |
From: <bo...@us...> - 2003-11-27 14:57:59
|
Update of /cvsroot/nice/Nice/src/bossa/modules In directory sc8-pr-cvs1:/tmp/cvs-serv14064/src/bossa/modules Modified Files: Package.java Log Message: Put closures needed by a class in the implementation class, not the dispatch class, since classes are again only generated during the initial compilation. Index: Package.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/modules/Package.java,v retrieving revision 1.104 retrieving revision 1.105 diff -C2 -d -r1.104 -r1.105 *** Package.java 27 Nov 2003 00:54:43 -0000 1.104 --- Package.java 27 Nov 2003 14:57:56 -0000 1.105 *************** *** 610,628 **** ClassExp res = new ClassExp(classe); ! addImplementationClass(res); return res; } ! public void addImplementationClass(gnu.expr.ClassExp classe) { thisPkg.addClass(classe); ! /* If a class need an outer frame (for instance if the constructor ! defines an anonymous function), then use the dispatch class. ! The implementation class would be inappropriate, since it is ! not regenerated when importing a compiled package, while ! classes and the dispatch class are. ! */ ! classe.outer = dispatchClass; } --- 610,624 ---- ClassExp res = new ClassExp(classe); ! addUserClass(res); return res; } ! public void addUserClass(gnu.expr.ClassExp classe) { thisPkg.addClass(classe); ! // A class only needs an outer frame if we are compiling the package. ! if (compiling()) ! classe.outer = getImplementationClass(); } |
From: <bo...@us...> - 2003-11-27 14:57:59
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv14064/src/bossa/syntax Modified Files: NiceClass.java Module.java Log Message: Put closures needed by a class in the implementation class, not the dispatch class, since classes are again only generated during the initial compilation. Index: NiceClass.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/NiceClass.java,v retrieving revision 1.72 retrieving revision 1.73 diff -C2 -d -r1.72 -r1.73 *** NiceClass.java 26 Nov 2003 16:25:55 -0000 1.72 --- NiceClass.java 27 Nov 2003 14:57:56 -0000 1.73 *************** *** 600,604 **** res.setSimple(true); res.setAccessFlags(definition.getBytecodeFlags()); ! definition.module.addImplementationClass(res); return res; } --- 600,604 ---- res.setSimple(true); res.setAccessFlags(definition.getBytecodeFlags()); ! definition.module.addUserClass(res); return res; } Index: Module.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/Module.java,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** Module.java 7 Nov 2003 21:53:00 -0000 1.18 --- Module.java 27 Nov 2003 14:57:56 -0000 1.19 *************** *** 36,39 **** boolean packageMethod); gnu.expr.ClassExp getClassExp(NiceClass def); ! void addImplementationClass(gnu.expr.ClassExp classe); } --- 36,39 ---- boolean packageMethod); gnu.expr.ClassExp getClassExp(NiceClass def); ! void addUserClass(gnu.expr.ClassExp classe); } |
From: <bo...@us...> - 2003-11-27 14:57:59
|
Update of /cvsroot/nice/Nice/testsuite/compiler/classes In directory sc8-pr-cvs1:/tmp/cvs-serv14064/testsuite/compiler/classes Modified Files: initializer.testsuite Log Message: Put closures needed by a class in the implementation class, not the dispatch class, since classes are again only generated during the initial compilation. Index: initializer.testsuite =================================================================== RCS file: /cvsroot/nice/Nice/testsuite/compiler/classes/initializer.testsuite,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** initializer.testsuite 27 Nov 2003 14:23:24 -0000 1.10 --- initializer.testsuite 27 Nov 2003 14:57:56 -0000 1.11 *************** *** 171,175 **** assert new A().x; ! /// PASS bug /// package a /// Toplevel --- 171,175 ---- assert new A().x; ! /// PASS /// package a /// Toplevel |
From: <ar...@us...> - 2003-11-27 14:23:28
|
Update of /cvsroot/nice/Nice/testsuite/compiler/classes In directory sc8-pr-cvs1:/tmp/cvs-serv8000/F:/nice/testsuite/compiler/classes Modified Files: initializer.testsuite Log Message: Testcase for bug with anonymous functions in a initializer. Index: initializer.testsuite =================================================================== RCS file: /cvsroot/nice/Nice/testsuite/compiler/classes/initializer.testsuite,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** initializer.testsuite 24 Oct 2003 13:44:40 -0000 1.9 --- initializer.testsuite 27 Nov 2003 14:23:24 -0000 1.10 *************** *** 170,171 **** --- 170,186 ---- /// package b import a assert new A().x; + + /// PASS bug + /// package a + /// Toplevel + class TestA { + { + this.foo((String s) => {}); + } + + void foo(String->void f) { + (f)("xyz"); + } + } + /// package b import a + let x = new TestA(); |
From: <bo...@us...> - 2003-11-27 01:47:54
|
Update of /cvsroot/nice/Nice/regtest/basic In directory sc8-pr-cvs1:/tmp/cvs-serv20127/regtest/basic Modified Files: methods.nice Log Message: Prevent ambiguity. Index: methods.nice =================================================================== RCS file: /cvsroot/nice/Nice/regtest/basic/methods.nice,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** methods.nice 15 Jun 2003 12:58:30 -0000 1.4 --- methods.nice 27 Nov 2003 01:47:50 -0000 1.5 *************** *** 7,11 **** name(c@C1) = "C1"; name(c@C2) = "C2"; ! name(null) = "NULL class"; void test_methods(); --- 7,11 ---- name(c@C1) = "C1"; name(c@C2) = "C2"; ! name(null(C1)) = "NULL class"; void test_methods(); |
From: <bo...@us...> - 2003-11-27 01:24:56
|
Update of /cvsroot/nice/Nice/src/gnu/bytecode In directory sc8-pr-cvs1:/tmp/cvs-serv16671/src/gnu/bytecode Modified Files: Type.java Log Message: Do not discard classes loaded by reflexion, so that they don't need to be reloaded. Index: Type.java =================================================================== RCS file: /cvsroot/nice/Nice/src/gnu/bytecode/Type.java,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** Type.java 27 Nov 2003 00:21:20 -0000 1.17 --- Type.java 27 Nov 2003 01:24:53 -0000 1.18 *************** *** 197,201 **** type.reflectClass = reflectClass; registerTypeForClass(reflectClass, type); - type.collectable = true; return type; } --- 197,200 ---- |
From: <bo...@us...> - 2003-11-27 00:54:53
|
Update of /cvsroot/nice/Nice/src/gnu/bytecode In directory sc8-pr-cvs1:/tmp/cvs-serv10544/src/gnu/bytecode Modified Files: ClassFileInput.java Log Message: Moved the type registration to a more logical place, in ClassFileInput. Index: ClassFileInput.java =================================================================== RCS file: /cvsroot/nice/Nice/src/gnu/bytecode/ClassFileInput.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ClassFileInput.java 27 Nov 2003 00:21:20 -0000 1.5 --- ClassFileInput.java 27 Nov 2003 00:54:43 -0000 1.6 *************** *** 69,72 **** --- 69,73 ---- { ctype = new ClassType(name); + Type.registerTypeForName(name, ctype); ctype.collectable = true; } |
From: <bo...@us...> - 2003-11-27 00:54:52
|
Update of /cvsroot/nice/Nice/src/bossa/modules In directory sc8-pr-cvs1:/tmp/cvs-serv10544/src/bossa/modules Modified Files: Package.java Log Message: Moved the type registration to a more logical place, in ClassFileInput. Index: Package.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/modules/Package.java,v retrieving revision 1.103 retrieving revision 1.104 diff -C2 -d -r1.103 -r1.104 *** Package.java 27 Nov 2003 00:21:20 -0000 1.103 --- Package.java 27 Nov 2003 00:54:43 -0000 1.104 *************** *** 609,614 **** Internal.error("Compiled class " + def + " was not found"); - Type.registerTypeForName(name, classe); - ClassExp res = new ClassExp(classe); addImplementationClass(res); --- 609,612 ---- |
From: <bo...@us...> - 2003-11-27 00:21:24
|
Update of /cvsroot/nice/Nice/src/gnu/expr In directory sc8-pr-cvs1:/tmp/cvs-serv4508/src/gnu/expr Modified Files: ClassExp.java Log Message: Delete ClassTypes from the cache, to avoid memory usage from groing for multiple compilations in the same JVM. Index: ClassExp.java =================================================================== RCS file: /cvsroot/nice/Nice/src/gnu/expr/ClassExp.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** ClassExp.java 24 Nov 2003 14:47:49 -0000 1.15 --- ClassExp.java 27 Nov 2003 00:21:19 -0000 1.16 *************** *** 258,261 **** --- 258,262 ---- type.setSuper(superType); } + instanceType.collectable = true; // Access.SUPER mut be set on all non-interface classes if (! isInterface()) |