New flag --incompatible_bzl_disallow_load_after_statement
This disallows to have any statement in a .bzl file before a load() statement.
RELNOTES:
load() statements should be called at the top of .bzl files, before any
other statement. This convention will be enforced in the future.
PiperOrigin-RevId: 155636719
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java
index 85a8f8c..9b17d4b 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java
@@ -44,6 +44,22 @@
}
@Test
+ public void testLoadAfterStatement() throws Exception {
+ env = newEnvironmentWithSkylarkOptions("--incompatible_bzl_disallow_load_after_statement=true");
+ checkError(
+ "load() statements must be called before any other statement",
+ "a = 5",
+ "load(':b.bzl', 'c')");
+ }
+
+ @Test
+ public void testAllowLoadAfterStatement() throws Exception {
+ env =
+ newEnvironmentWithSkylarkOptions("--incompatible_bzl_disallow_load_after_statement=false");
+ parse("a = 5", "load(':b.bzl', 'c')");
+ }
+
+ @Test
public void testTwoFunctionsWithTheSameName() throws Exception {
checkError(
"Variable foo is read only", "def foo():", " return 1", "def foo(x, y):", " return 1");