summaryrefslogtreecommitdiffstats
path: root/parser/html/java/htmlparser/translator-src/nu
diff options
context:
space:
mode:
authorGaming4JC <g4jc@hyperbola.info>2020-01-18 10:31:06 -0500
committerGaming4JC <g4jc@hyperbola.info>2020-01-26 15:50:32 -0500
commit5b862aa38c4fcb1c91797c947ff86b5f70b3ba54 (patch)
tree0f18aedd83d68b5a5f01c5b2128de1f3624b20ce /parser/html/java/htmlparser/translator-src/nu
parent1aa6cdcc1d06dbf5a59ff8f741c0d6185c3517c1 (diff)
downloadUXP-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/nu')
-rw-r--r--parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/AnnotationHelperVisitor.java4
-rw-r--r--parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppTypes.java4
-rw-r--r--parser/html/java/htmlparser/translator-src/nu/validator/htmlparser/cpptranslate/CppVisitor.java6
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.");