Commit feec4b0614

Andrew Kelley <andrew@ziglang.org>
2021-09-01 02:01:57
langref: new usingnamespace semantics
1 parent f4d3d29
Changed files (1)
doc/langref.html.in
@@ -5812,32 +5812,20 @@ test "@intToPtr for pointer to zero bit type" {
 
       {#header_open|usingnamespace#}
       <p>
-      {#syntax#}usingnamespace{#endsyntax#} is a declaration that imports all the public declarations of
-      the operand, which must be a {#link|struct#}, {#link|union#}, or {#link|enum#}, into the current scope:
+      {#syntax#}usingnamespace{#endsyntax#} is a declaration that mixes all the public
+      declarations of the operand, which must be a {#link|struct#}, {#link|union#}, {#link|enum#},
+      or {#link|opaque#}, into the namespace:
       </p>
       {#code_begin|test|usingnamespace#}
-usingnamespace @import("std");
-
 test "using std namespace" {
-    try testing.expect(true);
-}
-      {#code_end#}
-      <p>
-      {#syntax#}usingnamespace{#endsyntax#} can also be used in containers:
-      </p>
-      {#code_begin|test|usingnamespace_inside_struct#}
-test "using namespace inside struct" {
-    const L = struct {
-        usingnamespace struct {
-            pub fn f() void {}
-        };
+    const S = struct {
+        usingnamespace @import("std");
     };
-    L.f();
+    try S.testing.expect(true);
 }
       {#code_end#}
       <p>
-      Instead of the above pattern, it is generally recommended to explicitly alias individual declarations.
-      However, {#syntax#}usingnamespace{#endsyntax#} has an important use case when organizing the public
+      {#syntax#}usingnamespace{#endsyntax#} has an important use case when organizing the public
       API of a file or package. For example, one might have <code>c.zig</code> with all of the
       {#link|C imports|Import from C Header File#}:
       </p>
@@ -5858,6 +5846,7 @@ pub usingnamespace @cImport({
       </p>
       {#header_close#}
 
+
       {#header_open|comptime#}
       <p>
       Zig places importance on the concept of whether an expression is known at compile-time.