]> git.lizzy.rs Git - rust.git/commitdiff
auto merge of #11029 : huonw/rust/rm-vec-as-buf, r=cmr
authorbors <bors@rust-lang.org>
Thu, 19 Dec 2013 01:11:42 +0000 (17:11 -0800)
committerbors <bors@rust-lang.org>
Thu, 19 Dec 2013 01:11:42 +0000 (17:11 -0800)
For `str.as_mut_buf`, un-closure-ification is achieved by outright removal (see commit message). The others are replaced by `.as_ptr`, `.as_mut_ptr` and `.len`

51 files changed:
configure
mk/llvm.mk
mk/tests.mk
src/etc/maketest.py
src/etc/mklldeps.py
src/etc/snapshot.py
src/etc/third-party/COPYING.LIB [deleted file]
src/etc/third-party/README.txt
src/libextra/bitv.rs
src/libextra/btree.rs
src/libextra/sync.rs
src/libextra/test.rs
src/libextra/treemap.rs
src/librustc/middle/borrowck/check_loans.rs
src/librustc/middle/check_loop.rs
src/librustc/middle/entry.rs
src/librustc/middle/resolve.rs
src/librustc/middle/trans/base.rs
src/librustc/middle/trans/debuginfo.rs
src/librustdoc/fold.rs
src/librustdoc/html/render.rs
src/libstd/hash.rs
src/libstd/rt/mpmc_bounded_queue.rs
src/libsyntax/parse/obsolete.rs
src/libsyntax/parse/parser.rs
src/rustllvm/llvm-auto-clean-trigger
src/test/auxiliary/issue-7178.rs [new file with mode: 0644]
src/test/auxiliary/issue-8259.rs [new file with mode: 0644]
src/test/compile-fail/issue-10412.rs [new file with mode: 0644]
src/test/compile-fail/issue-10545.rs [new file with mode: 0644]
src/test/compile-fail/issue-5806.rs [new file with mode: 0644]
src/test/compile-fail/return-in-block-function.rs [deleted file]
src/test/debug-info/by-value-self-argument-in-trait-impl.rs
src/test/debug-info/generic-method-on-generic-struct.rs
src/test/debug-info/method-on-enum.rs
src/test/debug-info/method-on-generic-struct.rs
src/test/debug-info/method-on-struct.rs
src/test/debug-info/method-on-trait.rs
src/test/debug-info/method-on-tuple-struct.rs
src/test/debug-info/self-in-default-method.rs
src/test/debug-info/self-in-generic-default-method.rs
src/test/run-make/rustdoc-smoke/Makefile [new file with mode: 0644]
src/test/run-make/rustdoc-smoke/foo.rs [new file with mode: 0644]
src/test/run-make/rustdoc-smoke/verify.sh [new file with mode: 0755]
src/test/run-pass/issue-5950.rs [new file with mode: 0644]
src/test/run-pass/issue-7178.rs [new file with mode: 0644]
src/test/run-pass/issue-8259.rs [new file with mode: 0644]
src/test/run-pass/issue-8578.rs [new file with mode: 0644]
src/test/run-pass/issue-8851.rs [new file with mode: 0644]
src/test/run-pass/issue-9129.rs [new file with mode: 0644]
src/test/run-pass/return-from-closure.rs [new file with mode: 0644]

index 30bbb05cf5d10551d3f377f4b5c0b9a75e2745b3..e1f1db4b60265ec36ad7c6fdb2f5b8031ed1dcc4 100755 (executable)
--- a/configure
+++ b/configure
@@ -910,9 +910,11 @@ do
         # Try to have LLVM pull in as few dependencies as possible (#9397)
         LLVM_OPTS="$LLVM_OPTS --disable-zlib --disable-libffi"
 
-        # pthreads works badly on mingw-w64 systems: #8996
+        # Use win32 native thread/lock apis instead of pthread wrapper.
+        # (llvm's configure tries to find pthread first, so we have to disable it explicitly.)
+        # Also note that pthreads works badly on mingw-w64 systems: #8996
         case "$CFG_BUILD" in
-            (*w64-mingw32)
+            (*-mingw32)
             LLVM_OPTS="$LLVM_OPTS --disable-pthreads"
             ;;
         esac
index cf4e98c6dba562272ca3f8f961bd44868dc8e30d..c85a46876138aa1e51d3ce0004f8251c7b209a62 100644 (file)
@@ -51,8 +51,7 @@ $(S)src/librustc/lib/llvmdeps.rs: \
                    $(LLVM_CONFIGS) \
                    $(S)src/etc/mklldeps.py
        $(Q)$(CFG_PYTHON) $(S)src/etc/mklldeps.py \
-           "$(LLVM_COMPONENTS)" $(LLVM_CONFIGS) \
-           > $@
+           "$@" "$(LLVM_COMPONENTS)" $(LLVM_CONFIGS)
 
 $(foreach host,$(CFG_HOST), \
  $(eval $(call DEF_LLVM_RULES,$(host))))
index f266a8975b4b31926a53c0393987af76ab102bbb..b026055ab25b45eebb59b48df3403096de16bf6f 100644 (file)
@@ -920,14 +920,15 @@ $$(call TEST_OK_FILE,$(1),$(2),$(3),rmake): \
 
 $(3)/test/run-make/%-$(1)-T-$(2)-H-$(3).ok: \
                $(S)src/test/run-make/%/Makefile \
-               $$(HSREQ$(1)_H_$(3))
+               $$(CSREQ$(1)_T_$(2)_H_$(3))
        @rm -rf $(3)/test/run-make/$$*
        @mkdir -p $(3)/test/run-make/$$*
        @echo maketest: $$*
        $$(Q)$$(CFG_PYTHON) $(S)src/etc/maketest.py $$(dir $$<) \
            $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \
            $(3)/test/run-make/$$* \
-           "$$(CC_$(3)) $$(CFG_GCCISH_CFLAGS_$(3))"
+           "$$(CC_$(3)) $$(CFG_GCCISH_CFLAGS_$(3))" \
+           $$(HBIN$(1)_H_$(3))/rustdoc$$(X_$(3))
        @touch $$@
 
 endef
index 96c658e56864b2f3b3f2e6fc7a25cfc751936dd1..00d80e1bf4d1d7f0180de54d9d25164fba1d00e1 100644 (file)
@@ -7,6 +7,7 @@ import sys
 os.putenv('RUSTC', os.path.abspath(sys.argv[2]))
 os.putenv('TMPDIR', os.path.abspath(sys.argv[3]))
 os.putenv('CC', sys.argv[4])
+os.putenv('RUSTDOC', os.path.abspath(sys.argv[5]))
 
 proc = subprocess.Popen(['make', '-C', sys.argv[1]],
                         stdout = subprocess.PIPE,
index 90e48de532b94b2ce16f69362dc7c52d7a21ae61..5b1abdf68a3d66f4d604a13694577f1aedb19293 100644 (file)
@@ -4,9 +4,11 @@ import os
 import sys
 import subprocess
 
-components = sys.argv[1].split(' ')
+f = open(sys.argv[1], 'wb')
 
-print """// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+components = sys.argv[2].split(' ')
+
+f.write("""// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -18,10 +20,10 @@ print """// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
 
 // WARNING: THIS IS A GENERATED FILE, DO NOT MODIFY
 //          take a look at src/etc/mklldeps.py if you're interested
-"""
+""")
 
-for llconfig in sys.argv[2:]:
-    print
+for llconfig in sys.argv[3:]:
+    f.write("\n")
 
     proc = subprocess.Popen([llconfig, '--host-target'], stdout = subprocess.PIPE)
     out, err = proc.communicate()
@@ -42,7 +44,7 @@ for llconfig in sys.argv[2:]:
         "target_os = \"" + os + "\"",
     ]
 
-    print "#[cfg(" + ', '.join(cfg) + ")]"
+    f.write("#[cfg(" + ', '.join(cfg) + ")]\n")
 
     args = [llconfig, '--libs']
     args.extend(components)
@@ -51,8 +53,7 @@ for llconfig in sys.argv[2:]:
 
     for lib in out.strip().split(' '):
         lib = lib[2:] # chop of the leading '-l'
-        print "#[link(name = \"" + lib + "\", kind = \"static\")]"
+        f.write("#[link(name = \"" + lib + "\", kind = \"static\")]\n")
     if os == 'win32':
-        print "#[link(name = \"pthread\")]"
-        print "#[link(name = \"imagehlp\")]"
-    print "extern {}"
+        f.write("#[link(name = \"imagehlp\")]\n")
+    f.write("extern {}\n")
index e6508ec526e201febdffee6376c1337fa79243c5..5ac035942bffdb798238ed4aa87a4c0c653826c0 100644 (file)
@@ -32,8 +32,7 @@ snapshot_files = {
     }
 
 winnt_runtime_deps = ["libgcc_s_dw2-1.dll",
-                      "libstdc++-6.dll",
-                      "libpthread-2.dll"]
+                      "libstdc++-6.dll"]
 
 def parse_line(n, line):
   global snapshotfile
diff --git a/src/etc/third-party/COPYING.LIB b/src/etc/third-party/COPYING.LIB
deleted file mode 100644 (file)
index 161a3d1..0000000
+++ /dev/null
@@ -1,482 +0,0 @@
-                 GNU LIBRARY GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 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.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, 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 library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-\f
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-\f
-                 GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, 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 library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete 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 distribute a copy of this License along with the
-Library.
-
-  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.
-\f
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, 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) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-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 Library, 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 Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-\f
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you 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.
-
-  If distribution of 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 satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-\f
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  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.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-\f
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library 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.
-
-  9. 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 Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-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.
-\f
-  11. 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 Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library 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 Library.
-
-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.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library 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.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library 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 Library
-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 Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-\f
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-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
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "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
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. 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 LIBRARY 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
-LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-\f
-     Appendix: How to Apply These Terms to Your New Libraries
-
-  If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
-  To apply these terms, attach the following notices to the library.  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 library's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Library General Public
-    License as published by the Free Software Foundation; either
-    version 2 of the License, or (at your option) any later version.
-
-    This library 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
-    Library General Public License for more details.
-
-    You should have received a copy of the GNU Library General Public
-    License along with this library; 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.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the
-  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
-  <signature of Ty Coon>, 1 April 1990
-  Ty Coon, President of Vice
-
-That's all there is to it!
index ca6da8cb4ebe0fc8f05162d40ea961c1327c1636..a77c0e77efd3fbeb22fec7e18679347406ddd900 100644 (file)
@@ -6,9 +6,3 @@ Specifically:
      or (at your option) any later version.  See the files COPYING3 and COPYING.RUNTIME respectively.
      You can obtain a copy of the source of these libraries either here: http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.5.2-1/,
      or from the project website at http://gcc.gnu.org
-     
-   - libpthread-2.dll is distributed under the terms of the GNU Lesser General Public License 
-     as published by the Free Software Foundation; either version 2 of the License, or (at your option) 
-     any later version.  See the file COPYING.LIB for details.
-     You can obtain a copy of the source of this library either here: http://sourceforge.net/projects/mingw/files/MinGW/Base/pthreads-w32/pthreads-w32-2.8.0-3/,
-     or from the project website at http://sourceware.org/pthreads-win32
index 733a893221872f4ccc0939587622dd77ef042a7e..3b44ad50ad79ab1b3eed09cf12a90a7cf7cb14bb 100644 (file)
@@ -932,7 +932,8 @@ fn size_hint(&self) -> (uint, Option<uint>) {
 mod tests {
     use extra::test::BenchHarness;
 
-    use bitv::*;
+    use bitv::{Bitv, SmallBitv, BigBitv, BitvSet, from_bools, from_fn,
+               from_bytes};
     use bitv;
 
     use std::uint;
index 5a4547ffeb24adf03ba2db19b63f960b0816bb7a..0f9eba2e9dcd4b72739a0a5120637d38b3c8fbdd 100644 (file)
@@ -407,7 +407,7 @@ fn clone(&self) -> BranchElt<K, V> {
 #[cfg(test)]
 mod test_btree{
 
-    use super::*;
+    use super::{BTree, LeafElt};
 
     ///Tests the functionality of the add methods (which are unfinished).
     #[test]
index 6e582982962773f4e515ac05b396a2057a27ce39..1546e9ca59cf46e76b037a68590cd604282792ff 100644 (file)
@@ -329,7 +329,7 @@ pub fn access_cond<U>(&self, blk: |c: &Condvar| -> U) -> U {
  ****************************************************************************/
 
 /// A counting, blocking, bounded-waiting semaphore.
-struct Semaphore { priv sem: Sem<()> }
+pub struct Semaphore { priv sem: Sem<()> }
 
 
 impl Clone for Semaphore {
index 974d4dc1dc520117a3ec6201a284118c59ff46f1..8f0c4fe6d234766def08a331c0d806a1ac5c6848 100644 (file)
@@ -670,7 +670,6 @@ fn should_sort_failures_before_printing_them() {
     use std::io::Decorator;
     use std::io::mem::MemWriter;
     use std::str;
-    fn dummy() {}
 
     let test_a = TestDesc {
         name: StaticTestName("a"),
@@ -1296,8 +1295,6 @@ fn parse_ignored_flag() {
 
     #[test]
     pub fn filter_for_ignored_option() {
-        fn dummy() {}
-
         // When we run ignored tests the test filter should filter out all the
         // unignored tests and flip the ignore flag on the rest to false
 
@@ -1441,6 +1438,7 @@ pub fn test_metricmap_compare() {
         assert_eq!(diff2.len(), 7);
     }
 
+    #[test]
     pub fn ratchet_test() {
 
         let dpth = TempDir::new("test-ratchet").expect("missing test for ratchet");
index 7c41104814978aac9a29b915d6ba2bd0b8e0be57..1cf980b1059410cbc01f01bc14acff7d6cf21a40 100644 (file)
@@ -884,7 +884,7 @@ fn extend<Iter: Iterator<T>>(&mut self, iter: &mut Iter) {
 #[cfg(test)]
 mod test_treemap {
 
-    use super::*;
+    use super::{TreeMap, TreeNode};
 
     use std::rand::Rng;
     use std::rand;
index 6d4450ec2e00bac0aee1f487d4972ad65049c7dd..13c45cc8e36d2c9937375b52a7b6f3d4f7cd2aac 100644 (file)
@@ -238,7 +238,7 @@ pub fn report_error_if_loan_conflicts_with_restriction(&self,
                              self.bccx.loan_path_to_str(new_loan.loan_path)));
                     self.bccx.span_note(
                         old_loan.span,
-                        format!("second borrow of `{}` as mutable occurs here",
+                        format!("previous borrow of `{}` as mutable occurs here",
                              self.bccx.loan_path_to_str(new_loan.loan_path)));
                     return false;
                 }
@@ -253,7 +253,7 @@ pub fn report_error_if_loan_conflicts_with_restriction(&self,
                              self.bccx.mut_to_str(old_loan.mutbl)));
                     self.bccx.span_note(
                         old_loan.span,
-                        format!("second borrow of `{}` occurs here",
+                        format!("previous borrow of `{}` occurs here",
                              self.bccx.loan_path_to_str(new_loan.loan_path)));
                     return false;
                 }
index a08884857a6062206b7bc8e8050d6967348d5853..332e63288a119de9028fa74ad00c0cc2fbf6928a 100644 (file)
@@ -47,12 +47,6 @@ fn visit_expr(&mut self, e: @ast::Expr, cx:Context) {
             }
             ast::ExprBreak(_) => self.require_loop("break", cx, e.span),
             ast::ExprAgain(_) => self.require_loop("continue", cx, e.span),
-            ast::ExprRet(oe) => {
-                if cx == Closure {
-                    self.tcx.sess.span_err(e.span, "`return` in a closure");
-                }
-                visit::walk_expr_opt(self, oe, cx);
-            }
             _ => visit::walk_expr(self, e, cx)
         }
     }
index c2d7878a081b655eccce529d7d0e831f109ca699..4103812d36189787afaed4f54a8252247fe83c96 100644 (file)
@@ -11,7 +11,6 @@
 
 use driver::session;
 use driver::session::Session;
-use syntax::abi;
 use syntax::ast::{Crate, NodeId, item, item_fn};
 use syntax::ast_map;
 use syntax::attr;
@@ -46,10 +45,7 @@ fn visit_item(&mut self, item:@item, _:()) {
 }
 
 pub fn find_entry_point(session: Session, crate: &Crate, ast_map: ast_map::map) {
-
-    // FIXME #4404 android JNI hacks
-    if *session.building_library &&
-        session.targ_cfg.os != abi::OsAndroid {
+    if *session.building_library {
         // No need to find a main function
         return;
     }
@@ -149,10 +145,6 @@ fn configure_main(this: &mut EntryContext) {
                 }
             }
             this.session.abort_if_errors();
-        } else {
-            // If we *are* building a library, then we're on android where we still might
-            // optionally want to translate main $4404
-            assert_eq!(this.session.targ_cfg.os, abi::OsAndroid);
         }
     }
 }
index 970b373f424e5c701f082a52410a0aa93a220275..07bcba684cab556e850ded0a51b67fc2d16510e3 100644 (file)
@@ -1258,11 +1258,16 @@ fn build_reduced_graph_for_item(&mut self,
                                 let parent_link =
                                     self.get_parent_link(new_parent, ident);
                                 let def_id = local_def(item.id);
+                                let ns = TypeNS;
+                                let is_public =
+                                    !name_bindings.defined_in_namespace(ns) ||
+                                     name_bindings.defined_in_public_namespace(ns);
+
                                 name_bindings.define_module(parent_link,
                                                             Some(def_id),
                                                             ImplModuleKind,
                                                             false,
-                                                            true,
+                                                            is_public,
                                                             sp);
 
                                 ModuleReducedGraphParent(
index de56453631eea4088c3891676ffb3f67edd48b69..7ab3b4fd69eab8e1375664a7b881fc8d2abcf0ea 100644 (file)
@@ -84,7 +84,7 @@
 use syntax::print::pprust::stmt_to_str;
 use syntax::{ast, ast_util, codemap, ast_map};
 use syntax::attr::AttrMetaMethods;
-use syntax::abi::{X86, X86_64, Arm, Mips, Rust, RustIntrinsic, OsWin32, OsAndroid};
+use syntax::abi::{X86, X86_64, Arm, Mips, Rust, RustIntrinsic, OsWin32};
 use syntax::visit;
 use syntax::visit::Visitor;
 
@@ -130,7 +130,7 @@ pub fn push_ctxt(s: &'static str) -> _InsnCtxt {
     _InsnCtxt { _x: () }
 }
 
-struct StatRecorder<'a> {
+pub struct StatRecorder<'a> {
     ccx: @mut CrateContext,
     name: &'a str,
     start: u64,
@@ -2289,11 +2289,7 @@ fn finish_register_fn(ccx: @mut CrateContext, sp: Span, sym: ~str, node_id: ast:
         lib::llvm::SetLinkage(llfn, lib::llvm::InternalLinkage);
     }
 
-    // FIXME #4404 android JNI hacks
-    let is_entry = is_entry_fn(&ccx.sess, node_id) && (!*ccx.sess.building_library ||
-                      (*ccx.sess.building_library &&
-                       ccx.sess.targ_cfg.os == OsAndroid));
-    if is_entry {
+    if is_entry_fn(&ccx.sess, node_id) && !*ccx.sess.building_library {
         create_entry_wrapper(ccx, sp, llfn);
     }
 }
@@ -2361,13 +2357,7 @@ fn create_entry_fn(ccx: @mut CrateContext,
         let llfty = Type::func([ccx.int_type, Type::i8().ptr_to().ptr_to()],
                                &ccx.int_type);
 
-        // FIXME #4404 android JNI hacks
-        let main_name = if *ccx.sess.building_library {
-            "amain"
-        } else {
-            "main"
-        };
-        let llfn = decl_cdecl_fn(ccx.llmod, main_name, llfty);
+        let llfn = decl_cdecl_fn(ccx.llmod, "main", llfty);
         let llbb = "top".with_c_str(|buf| {
             unsafe {
                 llvm::LLVMAppendBasicBlockInContext(ccx.llcx, llfn, buf)
@@ -3199,14 +3189,13 @@ pub fn trans_crate(sess: session::Session,
     }).to_owned_vec();
 
     // Make sure that some other crucial symbols are not eliminated from the
-    // module. This includes the main function (main/amain elsewhere), the crate
-    // map (used for debug log settings and I/O), and finally the curious
-    // rust_stack_exhausted symbol. This symbol is required for use by the
-    // libmorestack library that we link in, so we must ensure that this symbol
-    // is not internalized (if defined in the crate).
+    // module. This includes the main function, the crate map (used for debug
+    // log settings and I/O), and finally the curious rust_stack_exhausted
+    // symbol. This symbol is required for use by the libmorestack library that
+    // we link in, so we must ensure that this symbol is not internalized (if
+    // defined in the crate).
     reachable.push(ccx.crate_map_name.to_owned());
     reachable.push(~"main");
-    reachable.push(~"amain");
     reachable.push(~"rust_stack_exhausted");
 
     return CrateTranslation {
index 0783d5b418f2166d8953629e2050ea2b0773527c..a77e8f764f38d2a285070cc0f6b960911bd3a4c2 100644 (file)
@@ -129,11 +129,13 @@ struct List {
 use lib::llvm::llvm;
 use lib::llvm::{ModuleRef, ContextRef, ValueRef};
 use lib::llvm::debuginfo::*;
+use middle::trans::adt;
+use middle::trans::base;
+use middle::trans::build;
 use middle::trans::common::*;
 use middle::trans::machine;
 use middle::trans::type_of;
 use middle::trans::type_::Type;
-use middle::trans::adt;
 use middle::trans;
 use middle::ty;
 use middle::pat_util;
@@ -453,12 +455,29 @@ pub fn create_self_argument_metadata(bcx: @mut Block,
 
     let address_operations = &[unsafe { llvm::LLVMDIBuilderCreateOpDeref(Type::i64().to_ref()) }];
 
+    // The self argument comes in one of two forms:
+    // (1) For `&self`, `~self`, and `@self` it is an alloca containing a pointer to the data. That
+    //     is the `{&~@}self` pointer is contained by value in the alloca, and `type_of_self` will
+    //     be `{&~@}Self`
+    // (2) For by-value `self`, `llptr` will not be an alloca, but a pointer to the self-value. That
+    //     is by-value `self` is always implicitly passed by reference (sic!). So we have a couple
+    //     of problems here:
+    //     (a) There is no alloca to give to `llvm.dbg.declare` and
+    //     (b) `type_of_self` is `Self`, but `llptr` is of type `*Self`
+    //     In order to solve this problem, the else branch below creates a helper alloca which
+    //     contains a copy of `llptr`. We then describe the `self` parameter by pointing
+    //     `llvm.dbg.declare` to this helper alloca and tell it that the pointer there needs to be
+    //     dereferenced once to get to the actual data (similar to non-immediate by-value args).
     let variable_access = if unsafe { llvm::LLVMIsAAllocaInst(llptr) } != ptr::null() {
         DirectVariable { alloca: llptr }
     } else {
-        // This is not stable and may break with future LLVM versions. llptr should really always
-        // be an alloca. Anything else is not supported and just works by chance.
-        IndirectVariable { alloca: llptr, address_operations: address_operations }
+        // Create a helper alloca that allows us to track the self-argument properly. The alloca
+        // contains a pointer to the self-value.
+        let ptr_type = ty::mk_mut_ptr(bcx.tcx(), type_of_self);
+        let helper_alloca = base::alloc_ty(bcx, ptr_type, "__self");
+        build::Store(bcx, llptr, helper_alloca);
+
+        IndirectVariable { alloca: helper_alloca, address_operations: address_operations }
     };
 
     declare_local(bcx,
index 080c7de835cb5c6edbe428c1e22612708df4590a..696ea6ec9b8eca0b25629727a1f0f9d718ce94d8 100644 (file)
@@ -24,8 +24,7 @@ fn fold_item_recur(&mut self, item: Item) -> Option<Item> {
         let inner = inner;
         let c = |x| self.fold_item(x);
         let inner = match inner {
-            StructItem(i) => {
-                let mut i = i;
+            StructItem(mut i) => {
                 let mut foo = ~[]; swap(&mut foo, &mut i.fields);
                 let num_fields = foo.len();
                 i.fields.extend(&mut foo.move_iter().filter_map(|x| self.fold_item(x)));
@@ -35,15 +34,14 @@ fn fold_item_recur(&mut self, item: Item) -> Option<Item> {
             ModuleItem(i) => {
                 ModuleItem(self.fold_mod(i))
             },
-            EnumItem(i) => {
-                let mut i = i;
+            EnumItem(mut i) => {
                 let mut foo = ~[]; swap(&mut foo, &mut i.variants);
                 let num_variants = foo.len();
                 i.variants.extend(&mut foo.move_iter().filter_map(|x| self.fold_item(x)));
                 i.variants_stripped |= num_variants != i.variants.len();
                 EnumItem(i)
             },
-            TraitItem(i) => {
+            TraitItem(mut i) => {
                 fn vtrm<T: DocFolder>(this: &mut T, trm: TraitMethod) -> Option<TraitMethod> {
                     match trm {
                         Required(it) => {
@@ -60,13 +58,11 @@ fn vtrm<T: DocFolder>(this: &mut T, trm: TraitMethod) -> Option<TraitMethod> {
                         },
                     }
                 }
-                let mut i = i;
                 let mut foo = ~[]; swap(&mut foo, &mut i.methods);
                 i.methods.extend(&mut foo.move_iter().filter_map(|x| vtrm(self, x)));
                 TraitItem(i)
             },
-            ImplItem(i) => {
-                let mut i = i;
+            ImplItem(mut i) => {
                 let mut foo = ~[]; swap(&mut foo, &mut i.methods);
                 i.methods.extend(&mut foo.move_iter().filter_map(|x| self.fold_item(x)));
                 ImplItem(i)
@@ -74,8 +70,7 @@ fn vtrm<T: DocFolder>(this: &mut T, trm: TraitMethod) -> Option<TraitMethod> {
             VariantItem(i) => {
                 let i2 = i.clone(); // this clone is small
                 match i.kind {
-                    StructVariant(j) => {
-                        let mut j = j;
+                    StructVariant(mut j) => {
                         let mut foo = ~[]; swap(&mut foo, &mut j.fields);
                         let num_fields = foo.len();
                         j.fields.extend(&mut foo.move_iter().filter_map(c));
index cf12eecd91463238eb611175e007419bec87fe9e..c84caf8acdd3a861bd02602ad2605c1350e32ad1 100644 (file)
@@ -678,7 +678,13 @@ fn crate(mut self, mut crate: clean::Crate, cache: Cache) {
         // using a rwarc makes this parallelizable in the future
         local_data::set(cache_key, Arc::new(cache));
 
-        self.item(item);
+        let mut work = ~[(self, item)];
+        while work.len() > 0 {
+            let (mut cx, item) = work.pop();
+            cx.item(item, |cx, item| {
+                work.push((cx.clone(), item));
+            })
+        }
     }
 
     /// Non-parellelized version of rendering an item. This will take the input
@@ -686,7 +692,7 @@ fn crate(mut self, mut crate: clean::Crate, cache: Cache) {
     /// all sub-items which need to be rendered.
     ///
     /// The rendering driver uses this closure to queue up more work.
-    fn item(&mut self, item: clean::Item) {
+    fn item(&mut self, item: clean::Item, f: |&mut Context, clean::Item|) {
         fn render(w: io::File, cx: &mut Context, it: &clean::Item,
                   pushname: bool) {
             info!("Rendering an item to {}", w.path().display());
@@ -733,7 +739,7 @@ fn render(w: io::File, cx: &mut Context, it: &clean::Item,
                     };
                     this.sidebar = build_sidebar(&m);
                     for item in m.items.move_iter() {
-                        this.item(item);
+                        f(this,item);
                     }
                 })
             }
@@ -1202,7 +1208,7 @@ fn item_enum(w: &mut Writer, it: &clean::Item, e: &clean::Enum) {
            VisSpace(it.visibility),
            it.name.get_ref().as_slice(),
            e.generics);
-    if e.variants.len() == 0 {
+    if e.variants.len() == 0 && !e.variants_stripped {
         write!(w, " \\{\\}");
     } else {
         write!(w, " \\{\n");
index a135d66141a51d3385efd5bb5b72df2d2dc691a5..4782bb5dd139f4b29042aef99565c26017c88b94 100644 (file)
@@ -303,6 +303,7 @@ fn reset(&mut self) {
 mod tests {
     use super::*;
     use prelude::*;
+    use super::SipState;
 
     // Hash just the bytes of the slice, without length prefix
     struct Bytes<'a>(&'a [u8]);
index 1e04e5eb78d59932d5cf34a25623b73485412d2a..25a3ba8ab48f19064cde20f3922909921e0fbcd0 100644 (file)
@@ -51,7 +51,7 @@ struct State<T> {
     pad3: [u8, ..64],
 }
 
-struct Queue<T> {
+pub struct Queue<T> {
     priv state: UnsafeArc<State<T>>,
 }
 
index 8e291ca6705f3619a888bad331af527fe1287cb2..d739fca99da0782f2d5ac3acf81d3e7bcd314227 100644 (file)
@@ -44,6 +44,7 @@ pub enum ObsoleteSyntax {
     ObsoleteVecDotDotWildcard,
     ObsoleteBoxedClosure,
     ObsoleteClosureType,
+    ObsoleteMultipleImport,
 }
 
 impl to_bytes::IterBytes for ObsoleteSyntax {
@@ -140,6 +141,10 @@ fn obsolete(&self, sp: Span, kind: ObsoleteSyntax) {
                 "closures are now written `|A| -> B` rather than `&fn(A) -> \
                  B`."
             ),
+            ObsoleteMultipleImport => (
+                "multiple imports",
+                "only one import is allowed per `use` statement"
+            ),
         };
 
         self.report(sp, kind, kind_str, desc);
index 9ab6cc96d33193a00ca705e83a879985e24dc146..35ea06d62ca77836cb658c4cf959226952fa7835 100644 (file)
@@ -4968,6 +4968,7 @@ fn parse_view_paths(&self) -> ~[@view_path] {
         let mut vp = ~[self.parse_view_path()];
         while *self.token == token::COMMA {
             self.bump();
+            self.obsolete(*self.last_span, ObsoleteMultipleImport);
             vp.push(self.parse_view_path());
         }
         return vp;
index bae0ad8fbc6c198e1e5ba0e426d9d317d70acf38..14dfc92097a2e7791f75c82696d8a6ea61aae8a9 100644 (file)
@@ -1,4 +1,4 @@
 # If this file is modified, then llvm will be forcibly cleaned and then rebuilt.
 # The actual contents of this file do not matter, but to trigger a change on the
 # build bots then the contents should be changed so git updates the mtime.
-2013-12-05
+2013-12-18
diff --git a/src/test/auxiliary/issue-7178.rs b/src/test/auxiliary/issue-7178.rs
new file mode 100644 (file)
index 0000000..fe3842e
--- /dev/null
@@ -0,0 +1,17 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+pub struct Foo<'a, A>(&'a A);
+
+impl<'a, A> Foo<'a, A> {
+    pub fn new(a: &'a A) -> Foo<'a, A> {
+        Foo(a)
+    }
+}
diff --git a/src/test/auxiliary/issue-8259.rs b/src/test/auxiliary/issue-8259.rs
new file mode 100644 (file)
index 0000000..91167e8
--- /dev/null
@@ -0,0 +1,15 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+
+pub enum Foo<'a> {
+    A,
+    B(&'a str),
+}
diff --git a/src/test/compile-fail/issue-10412.rs b/src/test/compile-fail/issue-10412.rs
new file mode 100644 (file)
index 0000000..1c816c6
--- /dev/null
@@ -0,0 +1,31 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+
+trait Serializable<'self, T> { //~ ERROR: no longer a special lifetime
+    fn serialize(val : &'self T) -> ~[u8];
+    fn deserialize(repr : &[u8]) -> &'self T;
+}
+
+impl<'self> Serializable<str> for &'self str {
+    fn serialize(val : &'self str) -> ~[u8] {
+        ~[1]
+    }
+    fn deserialize(repr: &[u8]) -> &'self str {
+        "hi"
+    }
+}
+
+fn main() {
+    println("hello");
+    let x = ~"foo";
+    let y = x;
+    println(y);
+}
diff --git a/src/test/compile-fail/issue-10545.rs b/src/test/compile-fail/issue-10545.rs
new file mode 100644 (file)
index 0000000..f6c62bb
--- /dev/null
@@ -0,0 +1,20 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+
+mod a {
+    struct S;
+    impl S { }
+}
+
+fn foo(_: a::S) { //~ ERROR: type `S` is private
+}
+
+fn main() {}
diff --git a/src/test/compile-fail/issue-5806.rs b/src/test/compile-fail/issue-5806.rs
new file mode 100644 (file)
index 0000000..676e889
--- /dev/null
@@ -0,0 +1,14 @@
+// opyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[path = "../compile-fail"]
+mod foo; //~ ERROR: illegal operation on a directory
+
+fn main() {}
diff --git a/src/test/compile-fail/return-in-block-function.rs b/src/test/compile-fail/return-in-block-function.rs
deleted file mode 100644 (file)
index f231810..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-fn main() {
-    let _x = || {
-        return //~ ERROR: `return` in a closure
-    };
-}
index 4f14837471ab2cdab07742c25b891b076d6a791a..d051ab9db93b19407338cb707964d27612dc3177 100644 (file)
@@ -8,7 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-// xfail-win32: FIXME (#10474)
 // xfail-android: FIXME(#10381)
 
 #[feature(managed_boxes)];
index 80f2031b92ebc86edaed630ee54da50bd7409378..767293c3dc8c86bc95524746dca15da02291ff30 100644 (file)
 
 // STACK BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = {8888, -8888}}
+// debugger:print self
+// check:$4 = {x = {8888, -8888}}
 // debugger:print arg1
-// check:$4 = -3
+// check:$5 = -3
 // debugger:print arg2
-// check:$5 = -4
+// check:$6 = -4
 // debugger:continue
 
 // OWNED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$6 = {x = 1234.5}
+// check:$7 = {x = 1234.5}
 // debugger:print arg1
-// check:$7 = -5
+// check:$8 = -5
 // debugger:print arg2
-// check:$8 = -6
+// check:$9 = -6
 // debugger:continue
 
 // OWNED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = 1234.5}
+// debugger:print self
+// check:$10 = {x = 1234.5}
 // debugger:print arg1
-// check:$9 = -7
+// check:$11 = -7
 // debugger:print arg2
-// check:$10 = -8
+// check:$12 = -8
 // debugger:continue
 
 // OWNED MOVED
 // debugger:finish
 // debugger:print *self
-// check:$11 = {x = 1234.5}
+// check:$13 = {x = 1234.5}
 // debugger:print arg1
-// check:$12 = -9
+// check:$14 = -9
 // debugger:print arg2
-// check:$13 = -10.5
+// check:$15 = -10.5
 // debugger:continue
 
 // MANAGED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$14 = {x = -1}
+// check:$16 = {x = -1}
 // debugger:print arg1
-// check:$15 = -11
+// check:$17 = -11
 // debugger:print arg2
-// check:$16 = -12.5
+// check:$18 = -12.5
 // debugger:continue
 
 // MANAGED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = -1}
+// debugger:print self
+// check:$19 = {x = -1}
 // debugger:print arg1
-// check:$17 = -13
+// check:$20 = -13
 // debugger:print *arg2
-// check:$18 = {-14, 14}
+// check:$21 = {-14, 14}
 // debugger:continue
 
 // MANAGED SELF
 // debugger:finish
 // debugger:print self->val
-// check:$19 = {x = -1}
+// check:$22 = {x = -1}
 // debugger:print arg1
-// check:$20 = -15
+// check:$23 = -15
 // debugger:print *arg2
-// check:$21 = {-16, 16.5}
+// check:$24 = {-16, 16.5}
 // debugger:continue
 
 #[feature(managed_boxes)];
index 622786fcb53c2df8319ba6e6c99a4040351b50b3..272da1690fd192a87ff11f4f3f1647385b27928c 100644 (file)
 
 // STACK BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {{Variant2, [...]}, {Variant2, 117901063}}
+// debugger:print self
+// check:$4 = {{Variant2, [...]}, {Variant2, 117901063}}
 // debugger:print arg1
-// check:$4 = -3
+// check:$5 = -3
 // debugger:print arg2
-// check:$5 = -4
+// check:$6 = -4
 // debugger:continue
 
 // OWNED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$6 = {{Variant1, x = 1799, y = 1799}, {Variant1, [...]}}
+// check:$7 = {{Variant1, x = 1799, y = 1799}, {Variant1, [...]}}
 // debugger:print arg1
-// check:$7 = -5
+// check:$8 = -5
 // debugger:print arg2
-// check:$8 = -6
+// check:$9 = -6
 // debugger:continue
 
 // OWNED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {{Variant1, x = 1799, y = 1799}, {Variant1, [...]}}
+// debugger:print self
+// check:$10 = {{Variant1, x = 1799, y = 1799}, {Variant1, [...]}}
 // debugger:print arg1
-// check:$9 = -7
+// check:$11 = -7
 // debugger:print arg2
-// check:$10 = -8
+// check:$12 = -8
 // debugger:continue
 
 // OWNED MOVED
 // debugger:finish
 // debugger:print *self
-// check:$11 = {{Variant1, x = 1799, y = 1799}, {Variant1, [...]}}
+// check:$13 = {{Variant1, x = 1799, y = 1799}, {Variant1, [...]}}
 // debugger:print arg1
-// check:$12 = -9
+// check:$14 = -9
 // debugger:print arg2
-// check:$13 = -10
+// check:$15 = -10
 // debugger:continue
 
 // MANAGED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$14 = {{Variant2, [...]}, {Variant2, 117901063}}
+// check:$16 = {{Variant2, [...]}, {Variant2, 117901063}}
 // debugger:print arg1
-// check:$15 = -11
+// check:$17 = -11
 // debugger:print arg2
-// check:$16 = -12
+// check:$18 = -12
 // debugger:continue
 
 // MANAGED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {{Variant2, [...]}, {Variant2, 117901063}}
+// debugger:print self
+// check:$19 = {{Variant2, [...]}, {Variant2, 117901063}}
 // debugger:print arg1
-// check:$17 = -13
+// check:$20 = -13
 // debugger:print arg2
-// check:$18 = -14
+// check:$21 = -14
 // debugger:continue
 
 // MANAGED SELF
 // debugger:finish
 // debugger:print self->val
-// check:$19 = {{Variant2, [...]}, {Variant2, 117901063}}
+// check:$22 = {{Variant2, [...]}, {Variant2, 117901063}}
 // debugger:print arg1
-// check:$20 = -15
+// check:$23 = -15
 // debugger:print arg2
-// check:$21 = -16
+// check:$24 = -16
 // debugger:continue
 
 #[feature(managed_boxes)];
index 99ed66cc03b52f237912ac99dcacd21516e9b6fd..ebfdea0437709006af744268d07ca7446aec7c0b 100644 (file)
 
 // STACK BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = {8888, -8888}}
+// debugger:print self
+// check:$4 = {x = {8888, -8888}}
 // debugger:print arg1
-// check:$4 = -3
+// check:$5 = -3
 // debugger:print arg2
-// check:$5 = -4
+// check:$6 = -4
 // debugger:continue
 
 // OWNED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$6 = {x = 1234.5}
+// check:$7 = {x = 1234.5}
 // debugger:print arg1
-// check:$7 = -5
+// check:$8 = -5
 // debugger:print arg2
-// check:$8 = -6
+// check:$9 = -6
 // debugger:continue
 
 // OWNED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = 1234.5}
+// debugger:print self
+// check:$10 = {x = 1234.5}
 // debugger:print arg1
-// check:$9 = -7
+// check:$11 = -7
 // debugger:print arg2
-// check:$10 = -8
+// check:$12 = -8
 // debugger:continue
 
 // OWNED MOVED
 // debugger:finish
 // debugger:print *self
-// check:$11 = {x = 1234.5}
+// check:$13 = {x = 1234.5}
 // debugger:print arg1
-// check:$12 = -9
+// check:$14 = -9
 // debugger:print arg2
-// check:$13 = -10
+// check:$15 = -10
 // debugger:continue
 
 // MANAGED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$14 = {x = -1}
+// check:$16 = {x = -1}
 // debugger:print arg1
-// check:$15 = -11
+// check:$17 = -11
 // debugger:print arg2
-// check:$16 = -12
+// check:$18 = -12
 // debugger:continue
 
 // MANAGED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = -1}
+// debugger:print self
+// check:$19 = {x = -1}
 // debugger:print arg1
-// check:$17 = -13
+// check:$20 = -13
 // debugger:print arg2
-// check:$18 = -14
+// check:$21 = -14
 // debugger:continue
 
 // MANAGED SELF
 // debugger:finish
 // debugger:print self->val
-// check:$19 = {x = -1}
+// check:$22 = {x = -1}
 // debugger:print arg1
-// check:$20 = -15
+// check:$23 = -15
 // debugger:print arg2
-// check:$21 = -16
+// check:$24 = -16
 // debugger:continue
 
 #[feature(managed_boxes)];
index 9c2afadaef386d16266d9cd2996396bb2022fbc8..e88e5a5ca636c593ceb3ef4eaab6ebedbab69f6b 100644 (file)
 
 // STACK BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = 100}
+// debugger:print self
+// check:$4 = {x = 100}
 // debugger:print arg1
-// check:$4 = -3
+// check:$5 = -3
 // debugger:print arg2
-// check:$5 = -4
+// check:$6 = -4
 // debugger:continue
 
 // OWNED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$6 = {x = 200}
+// check:$7 = {x = 200}
 // debugger:print arg1
-// check:$7 = -5
+// check:$8 = -5
 // debugger:print arg2
-// check:$8 = -6
+// check:$9 = -6
 // debugger:continue
 
 // OWNED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = 200}
+// debugger:print self
+// check:$10 = {x = 200}
 // debugger:print arg1
-// check:$9 = -7
+// check:$11 = -7
 // debugger:print arg2
-// check:$10 = -8
+// check:$12 = -8
 // debugger:continue
 
 // OWNED MOVED
 // debugger:finish
 // debugger:print *self
-// check:$11 = {x = 200}
+// check:$13 = {x = 200}
 // debugger:print arg1
-// check:$12 = -9
+// check:$14 = -9
 // debugger:print arg2
-// check:$13 = -10
+// check:$15 = -10
 // debugger:continue
 
 // MANAGED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$14 = {x = 300}
+// check:$16 = {x = 300}
 // debugger:print arg1
-// check:$15 = -11
+// check:$17 = -11
 // debugger:print arg2
-// check:$16 = -12
+// check:$18 = -12
 // debugger:continue
 
 // MANAGED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = 300}
+// debugger:print self
+// check:$19 = {x = 300}
 // debugger:print arg1
-// check:$17 = -13
+// check:$20 = -13
 // debugger:print arg2
-// check:$18 = -14
+// check:$21 = -14
 // debugger:continue
 
 // MANAGED SELF
 // debugger:finish
 // debugger:print self->val
-// check:$19 = {x = 300}
+// check:$22 = {x = 300}
 // debugger:print arg1
-// check:$20 = -15
+// check:$23 = -15
 // debugger:print arg2
-// check:$21 = -16
+// check:$24 = -16
 // debugger:continue
 
 #[feature(managed_boxes)];
index 6b67dcc18a9aacb7db3b102ae2d4e608289717fb..fd58cc1a7d3ba7fd4080b9f30cbb7696eda1e147 100644 (file)
 
 // STACK BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = 100}
+// debugger:print self
+// check:$4 = {x = 100}
 // debugger:print arg1
-// check:$4 = -3
+// check:$5 = -3
 // debugger:print arg2
-// check:$5 = -4
+// check:$6 = -4
 // debugger:continue
 
 // OWNED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$6 = {x = 200}
+// check:$7 = {x = 200}
 // debugger:print arg1
-// check:$7 = -5
+// check:$8 = -5
 // debugger:print arg2
-// check:$8 = -6
+// check:$9 = -6
 // debugger:continue
 
 // OWNED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = 200}
+// debugger:print self
+// check:$10 = {x = 200}
 // debugger:print arg1
-// check:$9 = -7
+// check:$11 = -7
 // debugger:print arg2
-// check:$10 = -8
+// check:$12 = -8
 // debugger:continue
 
 // OWNED MOVED
 // debugger:finish
 // debugger:print *self
-// check:$11 = {x = 200}
+// check:$13 = {x = 200}
 // debugger:print arg1
-// check:$12 = -9
+// check:$14 = -9
 // debugger:print arg2
-// check:$13 = -10
+// check:$15 = -10
 // debugger:continue
 
 // MANAGED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$14 = {x = 300}
+// check:$16 = {x = 300}
 // debugger:print arg1
-// check:$15 = -11
+// check:$17 = -11
 // debugger:print arg2
-// check:$16 = -12
+// check:$18 = -12
 // debugger:continue
 
 // MANAGED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = 300}
+// debugger:print self
+// check:$19 = {x = 300}
 // debugger:print arg1
-// check:$17 = -13
+// check:$20 = -13
 // debugger:print arg2
-// check:$18 = -14
+// check:$21 = -14
 // debugger:continue
 
 // MANAGED SELF
 // debugger:finish
 // debugger:print self->val
-// check:$19 = {x = 300}
+// check:$22 = {x = 300}
 // debugger:print arg1
-// check:$20 = -15
+// check:$23 = -15
 // debugger:print arg2
-// check:$21 = -16
+// check:$24 = -16
 // debugger:continue
 
 #[feature(managed_boxes)];
index 46177664a11eb2dbbc22a5a9106bf8d49c27716d..98dbff988e74d83112c69eb68a5ca7d0732cc215 100644 (file)
 
 // STACK BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {100, -100.5}
+// debugger:print self
+// check:$4 = {100, -100.5}
 // debugger:print arg1
-// check:$4 = -3
+// check:$5 = -3
 // debugger:print arg2
-// check:$5 = -4
+// check:$6 = -4
 // debugger:continue
 
 // OWNED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$6 = {200, -200.5}
+// check:$7 = {200, -200.5}
 // debugger:print arg1
-// check:$7 = -5
+// check:$8 = -5
 // debugger:print arg2
-// check:$8 = -6
+// check:$9 = -6
 // debugger:continue
 
 // OWNED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {200, -200.5}
+// debugger:print self
+// check:$10 = {200, -200.5}
 // debugger:print arg1
-// check:$9 = -7
+// check:$11 = -7
 // debugger:print arg2
-// check:$10 = -8
+// check:$12 = -8
 // debugger:continue
 
 // OWNED MOVED
 // debugger:finish
 // debugger:print *self
-// check:$11 = {200, -200.5}
+// check:$13 = {200, -200.5}
 // debugger:print arg1
-// check:$12 = -9
+// check:$14 = -9
 // debugger:print arg2
-// check:$13 = -10
+// check:$15 = -10
 // debugger:continue
 
 // MANAGED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$14 = {300, -300.5}
+// check:$16 = {300, -300.5}
 // debugger:print arg1
-// check:$15 = -11
+// check:$17 = -11
 // debugger:print arg2
-// check:$16 = -12
+// check:$18 = -12
 // debugger:continue
 
 // MANAGED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {300, -300.5}
+// debugger:print self
+// check:$19 = {300, -300.5}
 // debugger:print arg1
-// check:$17 = -13
+// check:$20 = -13
 // debugger:print arg2
-// check:$18 = -14
+// check:$21 = -14
 // debugger:continue
 
 // MANAGED SELF
 // debugger:finish
 // debugger:print self->val
-// check:$19 = {300, -300.5}
+// check:$22 = {300, -300.5}
 // debugger:print arg1
-// check:$20 = -15
+// check:$23 = -15
 // debugger:print arg2
-// check:$21 = -16
+// check:$24 = -16
 // debugger:continue
 
 #[feature(managed_boxes)];
index f9726c5329b1cfec89bf664bf43e865848846b1f..d5f735e77f4e1f68be49bbe79e80c6f4de2886a4 100644 (file)
 
 // STACK BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = 100}
+// debugger:print self
+// check:$4 = {x = 100}
 // debugger:print arg1
-// check:$4 = -3
+// check:$5 = -3
 // debugger:print arg2
-// check:$5 = -4
+// check:$6 = -4
 // debugger:continue
 
 // OWNED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$6 = {x = 200}
+// check:$7 = {x = 200}
 // debugger:print arg1
-// check:$7 = -5
+// check:$8 = -5
 // debugger:print arg2
-// check:$8 = -6
+// check:$9 = -6
 // debugger:continue
 
 // OWNED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = 200}
+// debugger:print self
+// check:$10 = {x = 200}
 // debugger:print arg1
-// check:$9 = -7
+// check:$11 = -7
 // debugger:print arg2
-// check:$10 = -8
+// check:$12 = -8
 // debugger:continue
 
 // OWNED MOVED
 // debugger:finish
 // debugger:print *self
-// check:$11 = {x = 200}
+// check:$13 = {x = 200}
 // debugger:print arg1
-// check:$12 = -9
+// check:$14 = -9
 // debugger:print arg2
-// check:$13 = -10
+// check:$15 = -10
 // debugger:continue
 
 // MANAGED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$14 = {x = 300}
+// check:$16 = {x = 300}
 // debugger:print arg1
-// check:$15 = -11
+// check:$17 = -11
 // debugger:print arg2
-// check:$16 = -12
+// check:$18 = -12
 // debugger:continue
 
 // MANAGED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = 300}
+// debugger:print self
+// check:$19 = {x = 300}
 // debugger:print arg1
-// check:$17 = -13
+// check:$20 = -13
 // debugger:print arg2
-// check:$18 = -14
+// check:$21 = -14
 // debugger:continue
 
 // MANAGED SELF
 // debugger:finish
 // debugger:print self->val
-// check:$19 = {x = 300}
+// check:$22 = {x = 300}
 // debugger:print arg1
-// check:$20 = -15
+// check:$23 = -15
 // debugger:print arg2
-// check:$21 = -16
+// check:$24 = -16
 // debugger:continue
 
 #[feature(managed_boxes)];
index 1b1e0ccf652483cae1d5cffe7a35ce5507b879a7..e7a6ee776104ed845f91409a04a37a4e1aa15bf2 100644 (file)
 
 // STACK BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = 987}
+// debugger:print self
+// check:$4 = {x = 987}
 // debugger:print arg1
-// check:$4 = -3
+// check:$5 = -3
 // debugger:print arg2
-// check:$5 = -4
+// check:$6 = -4
 // debugger:continue
 
 // OWNED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$6 = {x = 879}
+// check:$7 = {x = 879}
 // debugger:print arg1
-// check:$7 = -5
+// check:$8 = -5
 // debugger:print arg2
-// check:$8 = -6
+// check:$9 = -6
 // debugger:continue
 
 // OWNED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = 879}
+// debugger:print self
+// check:$10 = {x = 879}
 // debugger:print arg1
-// check:$9 = -7
+// check:$11 = -7
 // debugger:print arg2
-// check:$10 = -8
+// check:$12 = -8
 // debugger:continue
 
 // OWNED MOVED
 // debugger:finish
 // debugger:print *self
-// check:$11 = {x = 879}
+// check:$13 = {x = 879}
 // debugger:print arg1
-// check:$12 = -9
+// check:$14 = -9
 // debugger:print arg2
-// check:$13 = -10.5
+// check:$15 = -10.5
 // debugger:continue
 
 // MANAGED BY REF
 // debugger:finish
 // debugger:print *self
-// check:$14 = {x = 897}
+// check:$16 = {x = 897}
 // debugger:print arg1
-// check:$15 = -11
+// check:$17 = -11
 // debugger:print arg2
-// check:$16 = -12.5
+// check:$18 = -12.5
 // debugger:continue
 
 // MANAGED BY VAL
 // debugger:finish
-// d ebugger:print self -- ignored for now because of issue #8512
-// c heck:$X = {x = 897}
+// debugger:print self
+// check:$19 = {x = 897}
 // debugger:print arg1
-// check:$17 = -13
+// check:$20 = -13
 // debugger:print *arg2
-// check:$18 = {-14, 14}
+// check:$21 = {-14, 14}
 // debugger:continue
 
 // MANAGED SELF
 // debugger:finish
 // debugger:print self->val
-// check:$19 = {x = 897}
+// check:$22 = {x = 897}
 // debugger:print arg1
-// check:$20 = -15
+// check:$23 = -15
 // debugger:print *arg2
-// check:$21 = {-16, 16.5}
+// check:$24 = {-16, 16.5}
 // debugger:continue
 
 #[feature(managed_boxes)];
diff --git a/src/test/run-make/rustdoc-smoke/Makefile b/src/test/run-make/rustdoc-smoke/Makefile
new file mode 100644 (file)
index 0000000..0de678e
--- /dev/null
@@ -0,0 +1,5 @@
+-include ../tools.mk
+all:
+       $(RUSTDOC) -w html -o $(TMPDIR)/doc foo.rs
+       cp verify.sh $(TMPDIR)
+       $(call RUN,verify.sh) $(TMPDIR)
diff --git a/src/test/run-make/rustdoc-smoke/foo.rs b/src/test/run-make/rustdoc-smoke/foo.rs
new file mode 100644 (file)
index 0000000..7a86bf4
--- /dev/null
@@ -0,0 +1,15 @@
+#[pkgid = "foo#0.1"];
+
+//! Very docs
+
+pub mod bar {
+
+    /// So correct
+    pub mod baz {
+        /// Much detail
+        pub fn baz() { }
+    }
+
+    /// *wow*
+    pub trait Doge { }
+}
diff --git a/src/test/run-make/rustdoc-smoke/verify.sh b/src/test/run-make/rustdoc-smoke/verify.sh
new file mode 100755 (executable)
index 0000000..18f3939
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# $1 is the TMPDIR
+
+dirs="doc doc/foo doc/foo/bar doc/foo/bar/baz doc/src doc/src/foo"
+
+for dir in $dirs; do if [ ! -d $1/$dir ]; then
+       echo "$1/$dir is not a directory!"
+       exit 1
+fi done
+
+files="doc/foo/index.html doc/foo/bar/index.html doc/foo/bar/baz/fn.baz.html doc/foo/bar/trait.Doge.html doc/src/foo/foo.rs.html"
+
+for file in $files; do if [ ! -f $1/$file ]; then
+       echo "$1/$file is not a file!"
+       exit 1
+fi done
diff --git a/src/test/run-pass/issue-5950.rs b/src/test/run-pass/issue-5950.rs
new file mode 100644 (file)
index 0000000..b169d2d
--- /dev/null
@@ -0,0 +1,17 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// xfail-fast
+
+pub use local_alias = local;
+
+mod local { }
+
+fn main() {}
diff --git a/src/test/run-pass/issue-7178.rs b/src/test/run-pass/issue-7178.rs
new file mode 100644 (file)
index 0000000..3d635b8
--- /dev/null
@@ -0,0 +1,18 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// xfail-fast
+// aux-build:issue-7178.rs
+
+extern mod cross_crate_self = "issue-7178";
+
+fn main() {
+    let _ = cross_crate_self::Foo::new(&1i);
+}
diff --git a/src/test/run-pass/issue-8259.rs b/src/test/run-pass/issue-8259.rs
new file mode 100644 (file)
index 0000000..3e9007b
--- /dev/null
@@ -0,0 +1,17 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// xfail-fast
+// aux-build:issue-8259.rs
+
+extern mod other = "issue-8259";
+static a: other::Foo<'static> = other::A;
+
+fn main() {}
diff --git a/src/test/run-pass/issue-8578.rs b/src/test/run-pass/issue-8578.rs
new file mode 100644 (file)
index 0000000..fcc9278
--- /dev/null
@@ -0,0 +1,24 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+pub struct UninterpretedOption_NamePart {
+    name_part: Option<~str>,
+}
+
+impl<'a> UninterpretedOption_NamePart {
+    pub fn default_instance() -> &'static UninterpretedOption_NamePart {
+        static instance: UninterpretedOption_NamePart = UninterpretedOption_NamePart {
+            name_part: None,
+        };
+        &'static instance
+    }
+}
+
+pub fn main() {}
diff --git a/src/test/run-pass/issue-8851.rs b/src/test/run-pass/issue-8851.rs
new file mode 100644 (file)
index 0000000..947331e
--- /dev/null
@@ -0,0 +1,33 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[feature(macro_rules)];
+
+enum T {
+    A(int),
+    B(uint)
+}
+
+macro_rules! test(
+    ($e:expr) => (
+        fn foo(t: T) -> int {
+            match t {
+                A(y) => $e,
+                B(y) => $e
+            }
+        }
+    )
+)
+
+test!(10 + (y as int))
+
+pub fn main() {
+    foo(A(20));
+}
diff --git a/src/test/run-pass/issue-9129.rs b/src/test/run-pass/issue-9129.rs
new file mode 100644 (file)
index 0000000..bc6702c
--- /dev/null
@@ -0,0 +1,41 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// xfail-pretty
+
+#[feature(managed_boxes, macro_rules)];
+
+pub trait bomb { fn boom(@self, Ident); }
+pub struct S;
+impl bomb for S { fn boom(@self, _: Ident) { } }
+
+pub struct Ident { name: uint }
+
+// macro_rules! int3( () => ( unsafe { asm!( "int3" ); } ) )
+macro_rules! int3( () => ( { } ) )
+
+fn Ident_new() -> Ident {
+    int3!();
+    Ident {name: 0x6789ABCD }
+}
+
+pub fn light_fuse(fld: @bomb) {
+    int3!();
+    let f = || {
+        int3!();
+        fld.boom(Ident_new()); // *** 1
+    };
+    f();
+}
+
+pub fn main() {
+    let b = @S as @bomb;
+    light_fuse(b);
+}
diff --git a/src/test/run-pass/return-from-closure.rs b/src/test/run-pass/return-from-closure.rs
new file mode 100644 (file)
index 0000000..1756d74
--- /dev/null
@@ -0,0 +1,41 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// just to make sure that `return` is only returning from the closure,
+// not the surrounding function.
+static mut calls: uint = 0;
+
+fn surrounding() {
+    let return_works = |n: int| {
+        unsafe { calls += 1 }
+
+        if n >= 0 { return; }
+        fail!()
+    };
+
+    return_works(10);
+    return_works(20);
+
+
+    let return_works_proc = proc(n: int) {
+        unsafe { calls += 1 }
+
+        if n >= 0 { return; }
+        fail!()
+    };
+
+    return_works_proc(10);
+}
+
+pub fn main() {
+    surrounding();
+
+    assert_eq!(unsafe {calls}, 3);
+}