Bug 84144 [Parser2] GCC: labels as values
authorjyou13y <justin.you@synopsys.com>
Wed, 17 Jun 2015 05:39:14 +0000 (13:39 +0800)
committerGerrit Code Review @ Eclipse.org <gerrit@eclipse.org>
Thu, 18 Jun 2015 07:03:56 +0000 (03:03 -0400)
add support for syntax   int k = (int) && x;

Signed-off-by: jyou13y <justin.you@synopsys.com>
Change-Id: I3bb888b8930706b01c545794be4e054b025e641f

core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java
core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java

index fdd1a79..74f7c14 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2014 IBM Corporation and others.
+ * Copyright (c) 2004, 2015 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7565,7 +7565,19 @@ public class AST2Tests extends AST2TestBase {
        public void testExpressionLabelReference_84144() throws Exception {
                parseAndCheckBindings(true);
        }
-       
+
+       //      void f()
+       //      {
+       //              unsigned long long labelPtr;
+       //              labelPtr = (unsigned long long) &&L;
+       //              goto *labelPtr;
+       //      L:
+       //              return;
+       //      }
+       public void testExpressionLabelReferenceCast_84144() throws Exception {
+               parseAndCheckBindings(true);
+       }
+
        //      int version = 0;
        //      int NextVersion() {
        //              return __atomic_add_fetch(&version, 1, 5);
index add2ddf..a8a4d1a 100644 (file)
@@ -13,6 +13,7 @@
  *     Sergey Prigogin (Google)
  *     Thomas Corbat (IFS)
  *     Anders Dahlberg (Ericsson) - bug 84144
+ *     Justin You (Synopsys) - bug 84144
  *******************************************************************************/
 package org.eclipse.cdt.internal.core.dom.parser;
 
@@ -2556,7 +2557,6 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser {
                        skipBrackets(IToken.tLPAREN, IToken.tRPAREN, IToken.tSEMI);
                        switch (LTcatchEOF(1)) {
                        case IToken.tAMPERASSIGN:
-                       case IToken.tAND:
                        case IToken.tARROW:
                        case IToken.tARROWSTAR:
                        case IToken.tASSIGN: