From: 星外之神 Date: Tue, 25 Oct 2022 13:02:32 +0000 (+0800) Subject: vala: Report error in real literal if exponent has no digits X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2b69b8accac817f23bd51ca41d14deec131d83c5;p=thirdparty%2Fvala.git vala: Report error in real literal if exponent has no digits --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 6a2acf56c..10ff6183f 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1243,6 +1243,9 @@ TESTS = \ semantic/property-too-few-type-arguments.test \ semantic/property-too-many-type-arguments.test \ semantic/property-void.test \ + semantic/realliteral-exponent-has-no-digits.test \ + semantic/realliteral-exponent-has-no-digits2.test \ + semantic/realliteral-exponent-has-no-digits3.test \ semantic/reference-transfer-not-supported.test \ semantic/reference-transfer-unavailable.test \ semantic/return-in-nonvoid.test \ diff --git a/tests/semantic/realliteral-exponent-has-no-digits.test b/tests/semantic/realliteral-exponent-has-no-digits.test new file mode 100644 index 000000000..fbe418a07 --- /dev/null +++ b/tests/semantic/realliteral-exponent-has-no-digits.test @@ -0,0 +1,5 @@ +Invalid Code + +void main () { + double foo = 18.93e; +} diff --git a/tests/semantic/realliteral-exponent-has-no-digits2.test b/tests/semantic/realliteral-exponent-has-no-digits2.test new file mode 100644 index 000000000..b0d48fa09 --- /dev/null +++ b/tests/semantic/realliteral-exponent-has-no-digits2.test @@ -0,0 +1,5 @@ +Invalid Code + +void main () { + double foo = 20.03e+; +} diff --git a/tests/semantic/realliteral-exponent-has-no-digits3.test b/tests/semantic/realliteral-exponent-has-no-digits3.test new file mode 100644 index 000000000..0256423ef --- /dev/null +++ b/tests/semantic/realliteral-exponent-has-no-digits3.test @@ -0,0 +1,5 @@ +Invalid Code + +void main () { + double foo = 7.11e-; +} diff --git a/vala/valarealliteral.vala b/vala/valarealliteral.vala index 2924cd764..c992fba6f 100644 --- a/vala/valarealliteral.vala +++ b/vala/valarealliteral.vala @@ -71,6 +71,11 @@ public class Vala.RealLiteral : Literal { type_name = "double"; } + if (value.has_suffix ("e") || value.has_suffix ("+") || value.has_suffix ("-")) { + Report.error (source_reference, "exponent has no digits"); + error = true; + } + var st = (Struct) context.root.scope.lookup (type_name); // ensure attributes are already processed st.check (context);