diff options
author | laurentlb <laurentlb@google.com> | 2018-03-07 12:40:50 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-03-07 12:43:05 -0800 |
commit | 3068c0ed7eae3e1ff29ddd32d23def0bdfd42548 (patch) | |
tree | 5a2a18543d652e095deb7a9b98fcb9f42a2bfe5e /src/tools/skylark | |
parent | e2cf7aa47e3b0504a85fd5e5fc8586f923777aaf (diff) |
Skylint: Warn for the '/' operator (instead of '//').
RELNOTES: None.
PiperOrigin-RevId: 188217409
Diffstat (limited to 'src/tools/skylark')
-rw-r--r-- | src/tools/skylark/java/com/google/devtools/skylark/skylint/BadOperationChecker.java | 8 | ||||
-rw-r--r-- | src/tools/skylark/javatests/com/google/devtools/skylark/skylint/BadOperationCheckerTest.java | 7 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/tools/skylark/java/com/google/devtools/skylark/skylint/BadOperationChecker.java b/src/tools/skylark/java/com/google/devtools/skylark/skylint/BadOperationChecker.java index 65922b54e2..09df8ff7fe 100644 --- a/src/tools/skylark/java/com/google/devtools/skylark/skylint/BadOperationChecker.java +++ b/src/tools/skylark/java/com/google/devtools/skylark/skylint/BadOperationChecker.java @@ -39,6 +39,7 @@ public class BadOperationChecker extends AstVisitorWithNameResolution { private static final String DEPRECATED_PLUS_DEPSET_CATEGORY = "deprecated-plus-depset"; private static final String DEPRECATED_PLUS_DICT_CATEGORY = "deprecated-plus-dict"; private static final String DEPRECATED_PIPE_CATEGORY = "deprecated-pipe-dict"; + private static final String DEPRECATED_DIVISION_CATEGORY = "deprecated-division"; private final List<Issue> issues = new ArrayList<>(); @@ -123,6 +124,13 @@ public class BadOperationChecker extends AstVisitorWithNameResolution { + "See https://docs.bazel.build/versions/master/skylark/depsets.html " + "for the recommended use of depsets.", node.getLocation())); + } else if (node.getOperator() == Operator.DIVIDE) { + issues.add( + Issue.create( + DEPRECATED_DIVISION_CATEGORY, + "'/' operator is deprecated and should not be used. " + + "Use '//' instead (like in Python for floor division).", + node.getLocation())); } } diff --git a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/BadOperationCheckerTest.java b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/BadOperationCheckerTest.java index 834b0e0e22..27c1063147 100644 --- a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/BadOperationCheckerTest.java +++ b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/BadOperationCheckerTest.java @@ -145,4 +145,11 @@ public class BadOperationCheckerTest { Truth.assertThat(findIssues("foo + bar")).isEmpty(); Truth.assertThat(findIssues("foo += bar")).isEmpty(); } + + @Test + public void divisionOperator() { + Truth.assertThat(findIssues("5 / 2").toString()) + .contains("1:1-1:5: '/' operator is deprecated"); + Truth.assertThat(findIssues("5 // 2")).isEmpty(); + } } |