Skip to content

Commit

Permalink
[ggj][ast] feat: support negative numeric literals (#343)
Browse files Browse the repository at this point in the history
* fix!: refactor field into MethodArgument, add enum/msg flags

* feat: partial isAssignableFrom VaporRef support, enable full-name type usage

* feat: support negative numeric literals
  • Loading branch information
miraleung committed Sep 26, 2020
1 parent ffbc759 commit 9e79457
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,14 @@ public class Literal {
private static final String BOOLEAN_FALSE = "false";
private static final String NULL_VALUE = "null";

private static final Pattern INTEGER_PATTERN = Pattern.compile("^[0-9]+$");
private static final Pattern LONG_PATTERN = Pattern.compile("^[0-9]+[Ll]?$");
private static final Pattern INTEGER_PATTERN = Pattern.compile("^\\-?[0-9]+$");
private static final Pattern LONG_PATTERN = Pattern.compile("^\\-?[0-9]+[Ll]?$");
private static final Pattern FLOAT_PATTERN =
Pattern.compile("^[0-9]+([fF]|(\\.(([0-9]+[fF])|[fF])))?$");
Pattern.compile("^\\-?[0-9]+([fF]|(\\.(([0-9]+[fF])|[fF])))?$");
private static final Pattern DOUBLE_PATTERN_ONE =
Pattern.compile("^[0-9]+(\\.[0-9]+)?(\\.?[eE]\\-?[0-9]+)$");
private static final Pattern DOUBLE_PATTERN_TWO = Pattern.compile("^\\d*\\.\\d+$|^\\d+\\.\\d*$");
Pattern.compile("^\\-?[0-9]+(\\.[0-9]+)?(\\.?[eE]\\-?[0-9]+)$");
private static final Pattern DOUBLE_PATTERN_TWO =
Pattern.compile("^\\-?\\d*\\.\\d+$|^\\d+\\.\\d*$");

public static boolean isBooleanLiteral(String str) {
return str.equals(BOOLEAN_TRUE) || str.equals(BOOLEAN_FALSE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ public void nullLDetected() {
public void integerDetected() {
assertThat(Literal.isIntegerLiteral("a123")).isFalse();
assertThat(Literal.isIntegerLiteral("123")).isTrue();
assertThat(Literal.isIntegerLiteral("-123")).isTrue();
assertThat(Literal.isIntegerLiteral("123L")).isFalse();
assertThat(Literal.isIntegerLiteral("123r")).isFalse();
assertThat(Literal.isIntegerLiteral("123e2")).isFalse();
Expand All @@ -47,6 +48,7 @@ public void longDetected() {
assertThat(Literal.isLongLiteral("123")).isTrue();
assertThat(Literal.isLongLiteral("123L")).isTrue();
assertThat(Literal.isLongLiteral("123l")).isTrue();
assertThat(Literal.isLongLiteral("-123l")).isTrue();
assertThat(Literal.isLongLiteral("123e")).isFalse();
}

Expand All @@ -58,6 +60,7 @@ public void floatDetected() {
assertThat(Literal.isFloatLiteral("0.01")).isFalse();
assertThat(Literal.isFloatLiteral(".01")).isFalse();
assertThat(Literal.isFloatLiteral("123.f")).isTrue();
assertThat(Literal.isFloatLiteral("-123.f")).isTrue();
assertThat(Literal.isFloatLiteral("123.F")).isTrue();
assertThat(Literal.isFloatLiteral("123.234F")).isTrue();
assertThat(Literal.isFloatLiteral("123.234Fe-3")).isFalse();
Expand All @@ -69,11 +72,14 @@ public void doubleDetected() {
assertThat(Literal.isDoubleLiteral("123")).isTrue();
assertThat(Literal.isDoubleLiteral("0.01")).isTrue();
assertThat(Literal.isDoubleLiteral(".01")).isTrue();
assertThat(Literal.isDoubleLiteral("-.01")).isTrue();
assertThat(Literal.isDoubleLiteral("123.0")).isTrue();
assertThat(Literal.isDoubleLiteral("-123.0")).isTrue();
assertThat(Literal.isDoubleLiteral("123f")).isTrue();
assertThat(Literal.isDoubleLiteral("123E-2")).isTrue();
assertThat(Literal.isDoubleLiteral("123.134E-2")).isTrue();
assertThat(Literal.isDoubleLiteral("123.E-2")).isTrue();
assertThat(Literal.isDoubleLiteral("-123.E-2")).isTrue();
assertThat(Literal.isDoubleLiteral("123e2")).isTrue();
assertThat(Literal.isDoubleLiteral("123e")).isFalse();
assertThat(Literal.isDoubleLiteral("123E-")).isFalse();
Expand Down

0 comments on commit 9e79457

Please sign in to comment.