diff options
author | Gaming4JC <g4jc@hyperbola.info> | 2020-01-18 10:31:06 -0500 |
---|---|---|
committer | Gaming4JC <g4jc@hyperbola.info> | 2020-01-26 15:50:32 -0500 |
commit | 5b862aa38c4fcb1c91797c947ff86b5f70b3ba54 (patch) | |
tree | 0f18aedd83d68b5a5f01c5b2128de1f3624b20ce /parser/html/java/htmlparser/translator-src | |
parent | 1aa6cdcc1d06dbf5a59ff8f741c0d6185c3517c1 (diff) | |
download | UXP-5b862aa38c4fcb1c91797c947ff86b5f70b3ba54.tar UXP-5b862aa38c4fcb1c91797c947ff86b5f70b3ba54.tar.gz UXP-5b862aa38c4fcb1c91797c947ff86b5f70b3ba54.tar.lz UXP-5b862aa38c4fcb1c91797c947ff86b5f70b3ba54.tar.xz UXP-5b862aa38c4fcb1c91797c947ff86b5f70b3ba54.zip |
Bug 1352082 - Avoid shifting a signed integer left in C++.
Tag UXP Issue #1344
Diffstat (limited to 'parser/html/java/htmlparser/translator-src')
3 files changed, 13 insertions, 1 deletions
diff --git a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java index 337394a89..dc524820f 100644 --- a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java +++ b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java @@ -72,6 +72,10 @@ public class AnnotationHelperVisitor<T> extends VoidVisitorAdapter<T> { return hasAnnotation("NoLength"); } + protected boolean unsigned() { + return hasAnnotation("Unsigned"); + } + protected boolean auto() { return hasAnnotation("Auto"); } diff --git a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java index 80216da0e..6cbba4162 100644 --- a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java +++ b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java @@ -192,6 +192,10 @@ public class CppTypes { return "int32_t"; } + public String unsignedIntType() { + return "uint32_t"; + } + public String stringType() { return "nsHtml5String"; } diff --git a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java index f4f00070a..bf5775eb6 100644 --- a/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java +++ b/parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java @@ -548,7 +548,11 @@ public class CppVisitor extends AnnotationHelperVisitor<LocalSymbolTable> { case Float: throw new IllegalStateException("Unsupported primitive."); case Int: - printer.print(cppTypes.intType()); + if (unsigned()) { + printer.print(cppTypes.unsignedIntType()); + } else { + printer.print(cppTypes.intType()); + } break; case Long: throw new IllegalStateException("Unsupported primitive."); |