Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(573)

Unified Diff: mojo/public/tools/bindings/generators/mojom_java_generator.py

Issue 396063006: Mojo: Always suffix int literals with L in generated Java bindings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: -1L Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/public/tools/bindings/generators/java_templates/enum_definition.tmpl ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/tools/bindings/generators/mojom_java_generator.py
diff --git a/mojo/public/tools/bindings/generators/mojom_java_generator.py b/mojo/public/tools/bindings/generators/mojom_java_generator.py
index ec897f750f2b97d4824cb6d1540355ae48b6f221..ee121e75cc5d6a0582e80feda13c2572333ce08f 100644
--- a/mojo/public/tools/bindings/generators/mojom_java_generator.py
+++ b/mojo/public/tools/bindings/generators/mojom_java_generator.py
@@ -5,6 +5,7 @@
"""Generates java source files from a mojom.Module."""
import argparse
+import ast
import os
import re
@@ -208,8 +209,15 @@ def DefaultValue(context, field):
if isinstance(field.kind, mojom.Struct):
assert field.default == "default"
return "new %s()" % GetJavaType(context, field.kind)
- return "(%s) %s" % (GetJavaType(context, field.kind),
- ExpressionToText(context, field.default))
+ return "(%s) %s" % (
+ GetJavaType(context, field.kind),
+ ExpressionToText(context, field.default, kind_spec=field.kind.spec))
+
+@contextfilter
+def ConstantValue(context, constant):
+ return "(%s) %s" % (
+ GetJavaType(context, constant.kind),
+ ExpressionToText(context, constant.value, kind_spec=constant.kind.spec))
@contextfilter
def NewArray(context, kind, size):
@@ -218,7 +226,7 @@ def NewArray(context, kind, size):
return 'new %s[%s]' % (GetJavaType(context, kind.kind), size)
@contextfilter
-def ExpressionToText(context, token):
+def ExpressionToText(context, token, kind_spec=''):
def _TranslateNamedValue(named_value):
entity_name = GetNameForElement(named_value)
if named_value.parent_kind:
@@ -233,9 +241,12 @@ def ExpressionToText(context, token):
if isinstance(token, mojom.NamedValue):
return _TranslateNamedValue(token)
- # Add Long suffix to all number literals.
- if re.match('^[0-9]+$', token):
- number = int(token)
+ if kind_spec.startswith('i') or kind_spec.startswith('u'):
+ # Add Long suffix to all integer literals.
+ number = ast.literal_eval(token.lstrip('+ '))
+ if not isinstance(number, (int, long)):
+ raise ValueError('got unexpected type %r for int literal %r' % (
+ type(number), token))
# If the literal is too large to fit a signed long, convert it to the
# equivalent signed long.
if number >= 2 ** 63:
@@ -261,6 +272,7 @@ class Generator(generator.Generator):
java_filters = {
"interface_response_name": GetInterfaceResponseName,
+ "constant_value": ConstantValue,
"default_value": DefaultValue,
"decode_method": DecodeMethod,
"expression_to_text": ExpressionToText,
« no previous file with comments | « mojo/public/tools/bindings/generators/java_templates/enum_definition.tmpl ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698