Skip to content

Commit 7dab7eb

Browse files
committed
Recognize edition = "required" idiom
1 parent 5579049 commit 7dab7eb

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

rust/private/rust.bzl

+8-6
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def _determine_lib_name(name, crate_type, toolchain, lib_hash = None):
106106
extension = extension,
107107
)
108108

109-
def get_edition(attr, toolchain):
109+
def get_edition(ctx, toolchain):
110110
"""Returns the Rust edition from either the current rule's attirbutes or the current `rust_toolchain`
111111
112112
Args:
@@ -116,8 +116,10 @@ def get_edition(attr, toolchain):
116116
Returns:
117117
str: The target Rust edition
118118
"""
119-
if getattr(attr, "edition"):
120-
return attr.edition
119+
if getattr(ctx.attr, "edition"):
120+
return ctx.attr.edition
121+
elif toolchain.default_edition == "required":
122+
fail("Attribute `edition` is required for {}.".format(ctx.label))
121123
else:
122124
return toolchain.default_edition
123125

@@ -280,7 +282,7 @@ def _rust_library_common(ctx, crate_type):
280282
proc_macro_deps = depset(proc_macro_deps),
281283
aliases = ctx.attr.aliases,
282284
output = rust_lib,
283-
edition = get_edition(ctx.attr, toolchain),
285+
edition = get_edition(ctx, toolchain),
284286
rustc_env = ctx.attr.rustc_env,
285287
is_test = False,
286288
compile_data = depset(ctx.files.compile_data),
@@ -320,7 +322,7 @@ def _rust_binary_impl(ctx):
320322
proc_macro_deps = depset(proc_macro_deps),
321323
aliases = ctx.attr.aliases,
322324
output = output,
323-
edition = get_edition(ctx.attr, toolchain),
325+
edition = get_edition(ctx, toolchain),
324326
rustc_env = ctx.attr.rustc_env,
325327
is_test = False,
326328
compile_data = depset(ctx.files.compile_data),
@@ -386,7 +388,7 @@ def _rust_test_common(ctx, toolchain, output):
386388
proc_macro_deps = depset(proc_macro_deps),
387389
aliases = ctx.attr.aliases,
388390
output = output,
389-
edition = get_edition(ctx.attr, toolchain),
391+
edition = get_edition(ctx, toolchain),
390392
rustc_env = ctx.attr.rustc_env,
391393
is_test = True,
392394
compile_data = depset(ctx.files.compile_data),

0 commit comments

Comments
 (0)