@@ -106,7 +106,7 @@ def _determine_lib_name(name, crate_type, toolchain, lib_hash = None):
106
106
extension = extension ,
107
107
)
108
108
109
- def get_edition (attr , toolchain ):
109
+ def get_edition (ctx , toolchain ):
110
110
"""Returns the Rust edition from either the current rule's attirbutes or the current `rust_toolchain`
111
111
112
112
Args:
@@ -116,8 +116,10 @@ def get_edition(attr, toolchain):
116
116
Returns:
117
117
str: The target Rust edition
118
118
"""
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 ))
121
123
else :
122
124
return toolchain .default_edition
123
125
@@ -280,7 +282,7 @@ def _rust_library_common(ctx, crate_type):
280
282
proc_macro_deps = depset (proc_macro_deps ),
281
283
aliases = ctx .attr .aliases ,
282
284
output = rust_lib ,
283
- edition = get_edition (ctx . attr , toolchain ),
285
+ edition = get_edition (ctx , toolchain ),
284
286
rustc_env = ctx .attr .rustc_env ,
285
287
is_test = False ,
286
288
compile_data = depset (ctx .files .compile_data ),
@@ -320,7 +322,7 @@ def _rust_binary_impl(ctx):
320
322
proc_macro_deps = depset (proc_macro_deps ),
321
323
aliases = ctx .attr .aliases ,
322
324
output = output ,
323
- edition = get_edition (ctx . attr , toolchain ),
325
+ edition = get_edition (ctx , toolchain ),
324
326
rustc_env = ctx .attr .rustc_env ,
325
327
is_test = False ,
326
328
compile_data = depset (ctx .files .compile_data ),
@@ -386,7 +388,7 @@ def _rust_test_common(ctx, toolchain, output):
386
388
proc_macro_deps = depset (proc_macro_deps ),
387
389
aliases = ctx .attr .aliases ,
388
390
output = output ,
389
- edition = get_edition (ctx . attr , toolchain ),
391
+ edition = get_edition (ctx , toolchain ),
390
392
rustc_env = ctx .attr .rustc_env ,
391
393
is_test = True ,
392
394
compile_data = depset (ctx .files .compile_data ),
0 commit comments