Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Syfrig2017-11-07 03:14:21 +0000
committerMarco Syfrig2017-11-07 03:22:50 +0000
commit9a9e80e115dc943e9964b238d9b9697682d47e6a (patch)
tree8ba3329526f07552c80147c83de1e92618d044d8 /core/org.eclipse.cdt.core
parent69404fdf895d4f8cb0c024cdc9207004d05c95c4 (diff)
downloadorg.eclipse.cdt-9a9e80e115dc943e9964b238d9b9697682d47e6a.tar.gz
org.eclipse.cdt-9a9e80e115dc943e9964b238d9b9697682d47e6a.tar.xz
org.eclipse.cdt-9a9e80e115dc943e9964b238d9b9697682d47e6a.zip
Bug 526724: corrected deduced type for string literals with u8 prefix
Change-Id: Ibc55f6cbd8f425149598b397a4d2fb90b7ed6b8b Signed-off-by: Marco Syfrig <marco.syfrig@gmail.com>
Diffstat (limited to 'core/org.eclipse.cdt.core')
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLiteralExpression.java26
1 files changed, 17 insertions, 9 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLiteralExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLiteralExpression.java
index a59e9c25659..e63804a94c8 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLiteralExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLiteralExpression.java
@@ -242,6 +242,10 @@ public class CPPASTLiteralExpression extends ASTNode implements ICPPASTLiteralEx
// Skip past a prefix affecting the character type.
if (fValue[0] == 'L' || fValue[0] == 'u' || fValue[0] == 'U') {
+ if(fValue[1] == '8') {
+ ++start;
+ }
+
++start;
}
@@ -347,15 +351,19 @@ public class CPPASTLiteralExpression extends ASTNode implements ICPPASTLiteralEx
public Kind getBasicCharKind() {
switch (fValue[0]) {
- case 'L':
- return Kind.eWChar;
- case 'u':
- return Kind.eChar16;
- case 'U':
- return Kind.eChar32;
- default:
- return Kind.eChar;
- }
+ case 'L':
+ return Kind.eWChar;
+ case 'U':
+ return Kind.eChar32;
+ case 'u':
+ // Bug 526724 u8 should result in Kind.eChar
+ if (fValue[1] != '8') {
+ return Kind.eChar16;
+ }
+ //$FALL-THROUGH$
+ default:
+ return Kind.eChar;
+ }
}
private IType classifyTypeOfFloatLiteral() {

Back to the top