mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-22 14:12:10 +02:00
RESOLVED - bug 183848: add parser for Unified Parallel C
https://bugs.eclipse.org/bugs/show_bug.cgi?id=183848
This commit is contained in:
parent
53b7411eeb
commit
1c2f4ad61d
19 changed files with 930 additions and 0 deletions
7
upc/org.eclipse.cdt.core.parser.upc.tests/.classpath
Normal file
7
upc/org.eclipse.cdt.core.parser.upc.tests/.classpath
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||||
|
<classpathentry kind="output" path="bin"/>
|
||||||
|
</classpath>
|
28
upc/org.eclipse.cdt.core.parser.upc.tests/.project
Normal file
28
upc/org.eclipse.cdt.core.parser.upc.tests/.project
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>org.eclipse.cdt.core.parser.upc.tests</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.pde.PluginNature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,16 @@
|
||||||
|
Manifest-Version: 1.0
|
||||||
|
Bundle-ManifestVersion: 2
|
||||||
|
Bundle-Name: %Bundle-Name.0
|
||||||
|
Bundle-SymbolicName: org.eclipse.cdt.core.parser.upc.tests
|
||||||
|
Bundle-Version: 1.0.0
|
||||||
|
Require-Bundle: org.eclipse.core.runtime,
|
||||||
|
org.junit,
|
||||||
|
org.eclipse.cdt.core.parser.c99,
|
||||||
|
org.eclipse.cdt.core.tests,
|
||||||
|
org.eclipse.cdt.core,
|
||||||
|
org.eclipse.core.resources,
|
||||||
|
org.eclipse.cdt.core.parser.c99.tests,
|
||||||
|
org.eclipse.cdt.core.parser.upc
|
||||||
|
Eclipse-LazyStart: false
|
||||||
|
Bundle-Vendor: %Bundle-Vendor.0
|
||||||
|
Bundle-Localization: plugin
|
24
upc/org.eclipse.cdt.core.parser.upc.tests/about.html
Normal file
24
upc/org.eclipse.cdt.core.parser.upc.tests/about.html
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>About</title></head>
|
||||||
|
|
||||||
|
<body lang="EN-US">
|
||||||
|
<h2>About This Content</h2>
|
||||||
|
|
||||||
|
<p>February 8, 2007</p>
|
||||||
|
<h3>License</h3>
|
||||||
|
|
||||||
|
<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
|
||||||
|
indicated below, the Content is provided to you under the terms and conditions of the
|
||||||
|
Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
|
||||||
|
at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
|
||||||
|
For purposes of the EPL, "Program" will mean the Content.</p>
|
||||||
|
|
||||||
|
<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
|
||||||
|
being redistributed by another party ("Redistributor") and different terms and conditions may
|
||||||
|
apply to your use of any object code in the Content. Check the Redistributor's license that was
|
||||||
|
provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
|
||||||
|
indicated below, the terms and conditions of the EPL still apply to any source code in the Content
|
||||||
|
and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
|
||||||
|
|
||||||
|
</body></html>
|
|
@ -0,0 +1,6 @@
|
||||||
|
source.. = src/
|
||||||
|
output.. = bin/
|
||||||
|
bin.includes = META-INF/,\
|
||||||
|
.,\
|
||||||
|
about.html,\
|
||||||
|
plugin.properties
|
|
@ -0,0 +1,5 @@
|
||||||
|
# properties file for org.eclipse.cdt.core.parser.c99.tests
|
||||||
|
Bundle-Vendor.0 = Eclipse.org
|
||||||
|
Bundle-Name.0 = C99 Parser Tests Plug-in
|
||||||
|
|
||||||
|
upcSourceName=UPC Source File
|
|
@ -0,0 +1,36 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2006, 2007 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
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.upc.tests;
|
||||||
|
|
||||||
|
import junit.framework.Test;
|
||||||
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
|
public class AutomatedIntegrationSuite extends TestSuite {
|
||||||
|
|
||||||
|
public static Test suite() {
|
||||||
|
TestSuite suite = new TestSuite();
|
||||||
|
|
||||||
|
suite.addTestSuite(UPCC99CommentTests.class);
|
||||||
|
suite.addTestSuite(UPCC99CompletionBasicTest.class);
|
||||||
|
suite.addTestSuite(UPCC99CompletionParseTest.class);
|
||||||
|
suite.addTestSuite(UPCC99DOMLocationInclusionTests.class);
|
||||||
|
suite.addTestSuite(UPCC99DOMLocationMacroTests.class);
|
||||||
|
suite.addTestSuite(UPCC99DOMLocationTests.class);
|
||||||
|
suite.addTestSuite(UPCC99DOMPreprocessorInformationTest.class);
|
||||||
|
suite.addTestSuite(UPCC99KnRTests.class);
|
||||||
|
suite.addTestSuite(UPCC99SelectionParseTest.class);
|
||||||
|
suite.addTestSuite(UPCC99SpecTests.class);
|
||||||
|
suite.addTestSuite(UPCC99Tests.class);
|
||||||
|
suite.addTestSuite(UPCLanguageExtensionTests.class);
|
||||||
|
|
||||||
|
return suite;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2006, 2007 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
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.upc.tests;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.dom.c99.C99Language;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.UPCLanguage;
|
||||||
|
import org.eclipse.cdt.core.parser.c99.tests.C99CommentTests;
|
||||||
|
|
||||||
|
public class UPCC99CommentTests extends C99CommentTests {
|
||||||
|
|
||||||
|
protected C99Language getC99Language() {
|
||||||
|
return new UPCLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2006, 2007 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
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.upc.tests;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.dom.c99.C99Language;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.UPCLanguage;
|
||||||
|
import org.eclipse.cdt.core.parser.c99.tests.C99CompletionBasicTest;
|
||||||
|
|
||||||
|
public class UPCC99CompletionBasicTest extends C99CompletionBasicTest {
|
||||||
|
|
||||||
|
public UPCC99CompletionBasicTest() {
|
||||||
|
}
|
||||||
|
|
||||||
|
protected C99Language getC99Language() {
|
||||||
|
return new UPCLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2006, 2007 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
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.upc.tests;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.dom.c99.C99Language;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.UPCLanguage;
|
||||||
|
import org.eclipse.cdt.core.parser.c99.tests.C99CompletionParseTest;
|
||||||
|
|
||||||
|
public class UPCC99CompletionParseTest extends C99CompletionParseTest {
|
||||||
|
|
||||||
|
public UPCC99CompletionParseTest(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected C99Language getLanguage() {
|
||||||
|
return new UPCLanguage();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2006, 2007 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
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.upc.tests;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.dom.c99.C99Language;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.UPCLanguage;
|
||||||
|
import org.eclipse.cdt.core.parser.c99.tests.C99DOMLocationInclusionTests;
|
||||||
|
|
||||||
|
public class UPCC99DOMLocationInclusionTests extends C99DOMLocationInclusionTests {
|
||||||
|
|
||||||
|
protected C99Language getLanguage() {
|
||||||
|
return new UPCLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public UPCC99DOMLocationInclusionTests() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public UPCC99DOMLocationInclusionTests(String name, Class className) {
|
||||||
|
super(name, className);
|
||||||
|
}
|
||||||
|
|
||||||
|
public UPCC99DOMLocationInclusionTests(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2006, 2007 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
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.upc.tests;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.dom.c99.C99Language;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.UPCLanguage;
|
||||||
|
import org.eclipse.cdt.core.parser.c99.tests.C99DOMLocationMacroTests;
|
||||||
|
|
||||||
|
public class UPCC99DOMLocationMacroTests extends C99DOMLocationMacroTests {
|
||||||
|
|
||||||
|
public UPCC99DOMLocationMacroTests() {
|
||||||
|
}
|
||||||
|
|
||||||
|
protected C99Language getLanguage() {
|
||||||
|
return new UPCLanguage();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2006, 2007 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
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.upc.tests;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.dom.c99.C99Language;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.UPCLanguage;
|
||||||
|
import org.eclipse.cdt.core.parser.c99.tests.C99DOMLocationTests;
|
||||||
|
|
||||||
|
public class UPCC99DOMLocationTests extends C99DOMLocationTests {
|
||||||
|
|
||||||
|
public UPCC99DOMLocationTests() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public UPCC99DOMLocationTests(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected C99Language getC99Language() {
|
||||||
|
return new UPCLanguage();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2006, 2007 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
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.upc.tests;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.dom.c99.C99Language;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.UPCLanguage;
|
||||||
|
import org.eclipse.cdt.core.parser.c99.tests.C99DOMPreprocessorInformationTest;
|
||||||
|
|
||||||
|
public class UPCC99DOMPreprocessorInformationTest extends
|
||||||
|
C99DOMPreprocessorInformationTest {
|
||||||
|
|
||||||
|
protected C99Language getC99Language() {
|
||||||
|
return new UPCLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2006, 2007 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
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.upc.tests;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.dom.c99.C99Language;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.UPCLanguage;
|
||||||
|
import org.eclipse.cdt.core.parser.c99.tests.C99KnRTests;
|
||||||
|
|
||||||
|
public class UPCC99KnRTests extends C99KnRTests {
|
||||||
|
|
||||||
|
public UPCC99KnRTests() {
|
||||||
|
}
|
||||||
|
|
||||||
|
protected C99Language getLanguage() {
|
||||||
|
return new UPCLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2006, 2007 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
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.upc.tests;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.dom.c99.C99Language;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.UPCLanguage;
|
||||||
|
import org.eclipse.cdt.core.parser.c99.tests.C99SelectionParseTest;
|
||||||
|
|
||||||
|
public class UPCC99SelectionParseTest extends C99SelectionParseTest {
|
||||||
|
|
||||||
|
public UPCC99SelectionParseTest() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public UPCC99SelectionParseTest(String name, Class className) {
|
||||||
|
super(name, className);
|
||||||
|
}
|
||||||
|
|
||||||
|
public UPCC99SelectionParseTest(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected C99Language getLanguage() {
|
||||||
|
return new UPCLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2006, 2007 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
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.upc.tests;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.dom.c99.C99Language;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.UPCLanguage;
|
||||||
|
import org.eclipse.cdt.core.parser.c99.tests.C99SpecTests;
|
||||||
|
|
||||||
|
public class UPCC99SpecTests extends C99SpecTests {
|
||||||
|
|
||||||
|
public UPCC99SpecTests() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public UPCC99SpecTests(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected C99Language getLanguage() {
|
||||||
|
return new UPCLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2006, 2007 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
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.upc.tests;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.parser.c99.tests.C99Tests;
|
||||||
|
import org.eclipse.cdt.core.dom.c99.C99Language;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.UPCLanguage;
|
||||||
|
/**
|
||||||
|
* Run the C99 tests against the UPC parser
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class UPCC99Tests extends C99Tests {
|
||||||
|
|
||||||
|
public UPCC99Tests(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected C99Language getC99Language() {
|
||||||
|
return new UPCLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,498 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2006, 2007 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
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.core.parser.upc.tests;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.dom.ast.*;
|
||||||
|
import org.eclipse.cdt.core.dom.c99.C99Language;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.UPCLanguage;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTDeclSpecifier;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTForallStatement;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSimpleDeclSpecifier;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSizeofExpression;
|
||||||
|
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
|
||||||
|
import org.eclipse.cdt.core.parser.c99.tests.ParseHelper;
|
||||||
|
import org.eclipse.cdt.internal.core.parser.ParserException;
|
||||||
|
|
||||||
|
public class UPCLanguageExtensionTests extends TestCase {
|
||||||
|
|
||||||
|
public UPCLanguageExtensionTests() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public UPCLanguageExtensionTests(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected C99Language getLanguage() {
|
||||||
|
return new UPCLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
|
// test problem-free parsing of UPC constructs (maily declarations)
|
||||||
|
// test the AST is correct
|
||||||
|
// test that binding resolution works
|
||||||
|
|
||||||
|
private IASTTranslationUnit parseAndCheckBindings(String code) throws ParserException {
|
||||||
|
return ParseHelper.parse(code, getLanguage(), true, true, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private IASTTranslationUnit parse(String code) throws ParserException {
|
||||||
|
return ParseHelper.parse(code, getLanguage(), true, false, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void testUPCSharedDeclarations1() throws Exception {
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
sb.append("shared int a [100+THREADS];\n");//$NON-NLS-1$
|
||||||
|
sb.append("shared [] int b [THREADS];\n");//$NON-NLS-1$
|
||||||
|
sb.append("shared [90] int c [10];\n");//$NON-NLS-1$
|
||||||
|
sb.append("shared [*] int d [];\n");//$NON-NLS-1$
|
||||||
|
sb.append("relaxed int x;");//$NON-NLS-1$
|
||||||
|
sb.append("strict int y;");//$NON-NLS-1$
|
||||||
|
String code = sb.toString();
|
||||||
|
|
||||||
|
IASTTranslationUnit tu = parseAndCheckBindings(code);
|
||||||
|
IScope globalScope = tu.getScope();
|
||||||
|
assertNotNull(globalScope);
|
||||||
|
|
||||||
|
IASTDeclaration[] declarations = tu.getDeclarations();
|
||||||
|
assertNotNull(declarations);
|
||||||
|
assertEquals(6, declarations.length);
|
||||||
|
|
||||||
|
// shared int a [100+THREADS];
|
||||||
|
IASTSimpleDeclaration decl_a = (IASTSimpleDeclaration) declarations[0];
|
||||||
|
IUPCASTSimpleDeclSpecifier declspec_a = (IUPCASTSimpleDeclSpecifier) decl_a.getDeclSpecifier();
|
||||||
|
assertEquals(IUPCASTDeclSpecifier.rt_unspecified, declspec_a.getReferenceType());
|
||||||
|
assertEquals(IUPCASTDeclSpecifier.sh_shared_default_block_size, declspec_a.getSharedQualifier());
|
||||||
|
assertEquals(IASTSimpleDeclSpecifier.t_int, declspec_a.getType());
|
||||||
|
assertNull(declspec_a.getBlockSizeExpression());
|
||||||
|
IASTDeclarator[] declarators = decl_a.getDeclarators();
|
||||||
|
assertNotNull(declarators);
|
||||||
|
assertEquals(1, declarators.length);
|
||||||
|
IASTArrayDeclarator declarator_a = (IASTArrayDeclarator) declarators[0];
|
||||||
|
IASTName name_a = declarator_a.getName();
|
||||||
|
assertEquals("a", name_a.toString());//$NON-NLS-1$
|
||||||
|
IASTArrayModifier[] array_modifiers = declarator_a.getArrayModifiers();
|
||||||
|
assertNotNull(array_modifiers);
|
||||||
|
assertEquals(1, array_modifiers.length);
|
||||||
|
IASTBinaryExpression expr = (IASTBinaryExpression) array_modifiers[0].getConstantExpression();
|
||||||
|
IUPCASTKeywordExpression threads = (IUPCASTKeywordExpression) expr.getOperand2();
|
||||||
|
assertEquals(IUPCASTKeywordExpression.kw_threads, threads.getKeywordKind());
|
||||||
|
|
||||||
|
// shared [] int b [THREADS];
|
||||||
|
IASTSimpleDeclaration decl_b = (IASTSimpleDeclaration) declarations[1];
|
||||||
|
IUPCASTSimpleDeclSpecifier declspec_b = (IUPCASTSimpleDeclSpecifier) decl_b.getDeclSpecifier();
|
||||||
|
assertEquals(IUPCASTDeclSpecifier.rt_unspecified, declspec_b.getReferenceType());
|
||||||
|
assertEquals(IUPCASTDeclSpecifier.sh_shared_indefinite_allocation, declspec_b.getSharedQualifier());
|
||||||
|
assertEquals(IASTSimpleDeclSpecifier.t_int, declspec_b.getType());
|
||||||
|
assertNull(declspec_b.getBlockSizeExpression());
|
||||||
|
declarators = decl_b.getDeclarators();
|
||||||
|
assertNotNull(declarators);
|
||||||
|
assertEquals(1, declarators.length);
|
||||||
|
IASTArrayDeclarator declarator_b = (IASTArrayDeclarator) declarators[0];
|
||||||
|
IASTName name_b = declarator_b.getName();
|
||||||
|
assertEquals("b", name_b.toString());//$NON-NLS-1$
|
||||||
|
array_modifiers = declarator_b.getArrayModifiers();
|
||||||
|
assertNotNull(array_modifiers);
|
||||||
|
assertEquals(1, array_modifiers.length);
|
||||||
|
threads = (IUPCASTKeywordExpression) array_modifiers[0].getConstantExpression();
|
||||||
|
assertEquals(IUPCASTKeywordExpression.kw_threads, threads.getKeywordKind());
|
||||||
|
|
||||||
|
// shared [90] int c [10];
|
||||||
|
IASTSimpleDeclaration decl_c = (IASTSimpleDeclaration) declarations[2];
|
||||||
|
IUPCASTSimpleDeclSpecifier declspec_c = (IUPCASTSimpleDeclSpecifier) decl_c.getDeclSpecifier();
|
||||||
|
assertEquals(IUPCASTDeclSpecifier.rt_unspecified, declspec_c.getReferenceType());
|
||||||
|
assertEquals(IUPCASTDeclSpecifier.sh_shared_constant_expression, declspec_c.getSharedQualifier());
|
||||||
|
assertEquals(IASTSimpleDeclSpecifier.t_int, declspec_c.getType());
|
||||||
|
IASTLiteralExpression literalExpr = (IASTLiteralExpression) declspec_c.getBlockSizeExpression();
|
||||||
|
declarators = decl_c.getDeclarators();
|
||||||
|
assertNotNull(declarators);
|
||||||
|
assertEquals(1, declarators.length);
|
||||||
|
IASTArrayDeclarator declarator_c = (IASTArrayDeclarator) declarators[0];
|
||||||
|
IASTName name_c = declarator_c.getName();
|
||||||
|
assertEquals("c", name_c.toString());//$NON-NLS-1$
|
||||||
|
array_modifiers = declarator_c.getArrayModifiers();
|
||||||
|
assertNotNull(array_modifiers);
|
||||||
|
assertEquals(1, array_modifiers.length);
|
||||||
|
assertNotNull(array_modifiers[0].getConstantExpression());
|
||||||
|
|
||||||
|
// shared [*] int d [];
|
||||||
|
IASTSimpleDeclaration decl_d = (IASTSimpleDeclaration) declarations[3];
|
||||||
|
IUPCASTSimpleDeclSpecifier declspec_d = (IUPCASTSimpleDeclSpecifier) decl_d.getDeclSpecifier();
|
||||||
|
assertEquals(IUPCASTDeclSpecifier.rt_unspecified, declspec_d.getReferenceType());
|
||||||
|
assertEquals(IUPCASTDeclSpecifier.sh_shared_pure_allocation, declspec_d.getSharedQualifier());
|
||||||
|
assertEquals(IASTSimpleDeclSpecifier.t_int, declspec_d.getType());
|
||||||
|
assertNull(declspec_d.getBlockSizeExpression());
|
||||||
|
declarators = decl_d.getDeclarators();
|
||||||
|
assertNotNull(declarators);
|
||||||
|
assertEquals(1, declarators.length);
|
||||||
|
IASTArrayDeclarator declarator_d = (IASTArrayDeclarator) declarators[0];
|
||||||
|
IASTName name_d = declarator_d.getName();
|
||||||
|
assertEquals("d", name_d.toString());//$NON-NLS-1$
|
||||||
|
array_modifiers = declarator_d.getArrayModifiers();
|
||||||
|
assertNotNull(array_modifiers);
|
||||||
|
assertEquals(1, array_modifiers.length);
|
||||||
|
assertNull(array_modifiers[0].getConstantExpression());
|
||||||
|
|
||||||
|
IASTSimpleDeclaration decl_x = (IASTSimpleDeclaration) declarations[4];
|
||||||
|
IUPCASTSimpleDeclSpecifier declspec_x = (IUPCASTSimpleDeclSpecifier) decl_x.getDeclSpecifier();
|
||||||
|
assertEquals(IUPCASTSimpleDeclSpecifier.rt_relaxed, declspec_x.getReferenceType());
|
||||||
|
|
||||||
|
IASTSimpleDeclaration decl_y = (IASTSimpleDeclaration) declarations[5];
|
||||||
|
IUPCASTSimpleDeclSpecifier declspec_y = (IUPCASTSimpleDeclSpecifier) decl_y.getDeclSpecifier();
|
||||||
|
assertEquals(IUPCASTSimpleDeclSpecifier.rt_strict, declspec_y.getReferenceType());
|
||||||
|
|
||||||
|
|
||||||
|
IVariable binding_a = (IVariable) name_a.resolveBinding();
|
||||||
|
assertNotNull(binding_a);
|
||||||
|
assertEquals(globalScope, binding_a.getScope());
|
||||||
|
|
||||||
|
IVariable binding_b = (IVariable) name_a.resolveBinding();
|
||||||
|
assertNotNull(binding_b);
|
||||||
|
assertEquals(globalScope, binding_b.getScope());
|
||||||
|
|
||||||
|
IVariable binding_c = (IVariable) name_a.resolveBinding();
|
||||||
|
assertNotNull(binding_c);
|
||||||
|
assertEquals(globalScope, binding_c.getScope());
|
||||||
|
|
||||||
|
IVariable binding_d = (IVariable) name_a.resolveBinding();
|
||||||
|
assertNotNull(binding_d);
|
||||||
|
assertEquals(globalScope, binding_d.getScope());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void testUPCSharedDeclarations2() throws Exception {
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
sb.append("int x = 10;");//$NON-NLS-1$
|
||||||
|
sb.append("shared [x] int a [];\n");//$NON-NLS-1$
|
||||||
|
String code = sb.toString();
|
||||||
|
|
||||||
|
IASTTranslationUnit tu = parseAndCheckBindings(code);
|
||||||
|
IScope globalScope = tu.getScope();
|
||||||
|
assertNotNull(globalScope);
|
||||||
|
|
||||||
|
IASTDeclaration[] declarations = tu.getDeclarations();
|
||||||
|
assertNotNull(declarations);
|
||||||
|
assertEquals(2, declarations.length);
|
||||||
|
|
||||||
|
IASTSimpleDeclaration decl_x = (IASTSimpleDeclaration) declarations[0];
|
||||||
|
|
||||||
|
// shared [x] int a [];
|
||||||
|
IASTSimpleDeclaration decl_a = (IASTSimpleDeclaration) declarations[1];
|
||||||
|
IUPCASTSimpleDeclSpecifier declspec_a = (IUPCASTSimpleDeclSpecifier) decl_a.getDeclSpecifier();
|
||||||
|
assertEquals(IUPCASTDeclSpecifier.rt_unspecified, declspec_a.getReferenceType());
|
||||||
|
assertEquals(IUPCASTDeclSpecifier.sh_shared_constant_expression, declspec_a.getSharedQualifier());
|
||||||
|
assertEquals(IASTSimpleDeclSpecifier.t_int, declspec_a.getType());
|
||||||
|
IASTIdExpression expr_x = (IASTIdExpression) declspec_a.getBlockSizeExpression();
|
||||||
|
|
||||||
|
IASTName name_x = expr_x.getName();
|
||||||
|
IVariable binding_x = (IVariable) name_x.resolveBinding();
|
||||||
|
assertNotNull(binding_x);
|
||||||
|
assertEquals(decl_x.getDeclarators()[0].getName().resolveBinding(), binding_x);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void testUPCForall1() throws Exception {
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
sb.append("int main() {\n");//$NON-NLS-1$
|
||||||
|
sb.append(" int i;\n");//$NON-NLS-1$
|
||||||
|
sb.append(" shared float *a;\n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_forall(i=0; i<N; i++; &a[i]) { \n");//$NON-NLS-1$
|
||||||
|
sb.append(" a[i] = 99; \n");//$NON-NLS-1$
|
||||||
|
sb.append(" } \n");//$NON-NLS-1$
|
||||||
|
sb.append("}\n");//$NON-NLS-1$
|
||||||
|
String code = sb.toString();
|
||||||
|
|
||||||
|
IASTTranslationUnit tu = parse(code);
|
||||||
|
|
||||||
|
IScope globalScope = tu.getScope();
|
||||||
|
assertNotNull(globalScope);
|
||||||
|
|
||||||
|
IASTDeclaration[] declarations = tu.getDeclarations();
|
||||||
|
assertNotNull(declarations);
|
||||||
|
assertEquals(1, declarations.length);
|
||||||
|
|
||||||
|
IASTFunctionDefinition main = (IASTFunctionDefinition) declarations[0];
|
||||||
|
IASTStatement[] body = ((IASTCompoundStatement)main.getBody()).getStatements();
|
||||||
|
assertEquals(3, body.length);
|
||||||
|
|
||||||
|
IASTSimpleDeclaration decl_i = (IASTSimpleDeclaration)((IASTDeclarationStatement)body[0]).getDeclaration();
|
||||||
|
IVariable binding_i = (IVariable) decl_i.getDeclarators()[0].getName().resolveBinding();
|
||||||
|
|
||||||
|
IASTSimpleDeclaration decl_a = (IASTSimpleDeclaration)((IASTDeclarationStatement)body[1]).getDeclaration();
|
||||||
|
IVariable binding_a = (IVariable) decl_a.getDeclarators()[0].getName().resolveBinding();
|
||||||
|
|
||||||
|
IUPCASTForallStatement forall = (IUPCASTForallStatement) body[2];
|
||||||
|
|
||||||
|
IASTBinaryExpression expr1 = (IASTBinaryExpression)((IASTExpressionStatement)forall.getInitializerStatement()).getExpression();
|
||||||
|
IASTName name_i_1 = ((IASTIdExpression)expr1.getOperand1()).getName();
|
||||||
|
|
||||||
|
IASTBinaryExpression expr2 = (IASTBinaryExpression)forall.getConditionExpression();
|
||||||
|
IASTName name_i_2 = ((IASTIdExpression)expr2.getOperand1()).getName();
|
||||||
|
|
||||||
|
IASTUnaryExpression expr3 = (IASTUnaryExpression)forall.getIterationExpression();
|
||||||
|
IASTName name_i_3 = ((IASTIdExpression)expr3.getOperand()).getName();
|
||||||
|
|
||||||
|
IASTUnaryExpression expr4 = (IASTUnaryExpression)forall.getAffinityExpresiion();
|
||||||
|
IASTName name_i_4 = ((IASTIdExpression)((IASTArraySubscriptExpression)expr4.getOperand()).getSubscriptExpression()).getName();
|
||||||
|
IASTName name_a_1 = ((IASTIdExpression)((IASTArraySubscriptExpression)expr4.getOperand()).getArrayExpression()).getName();
|
||||||
|
|
||||||
|
IASTBinaryExpression expr5 = (IASTBinaryExpression)((IASTExpressionStatement)((IASTCompoundStatement)forall.getBody()).getStatements()[0]).getExpression();
|
||||||
|
IASTName name_i_5 = ((IASTIdExpression)((IASTArraySubscriptExpression)expr5.getOperand1()).getSubscriptExpression()).getName();
|
||||||
|
IASTName name_a_2 = ((IASTIdExpression)((IASTArraySubscriptExpression)expr5.getOperand1()).getArrayExpression()).getName();
|
||||||
|
|
||||||
|
// test binding resolution
|
||||||
|
IVariable binding_i_1 = (IVariable) name_i_1.resolveBinding();
|
||||||
|
assertNotNull(binding_i_1);
|
||||||
|
assertEquals(binding_i, binding_i_1);
|
||||||
|
|
||||||
|
IVariable binding_i_2 = (IVariable) name_i_2.resolveBinding();
|
||||||
|
assertNotNull(binding_i_2);
|
||||||
|
assertEquals(binding_i, binding_i_2);
|
||||||
|
|
||||||
|
IVariable binding_i_3 = (IVariable) name_i_3.resolveBinding();
|
||||||
|
assertNotNull(binding_i_3);
|
||||||
|
assertEquals(binding_i, binding_i_3);
|
||||||
|
|
||||||
|
IVariable binding_i_4 = (IVariable) name_i_4.resolveBinding();
|
||||||
|
assertNotNull(binding_i_4);
|
||||||
|
assertEquals(binding_i, binding_i_4);
|
||||||
|
|
||||||
|
IVariable binding_i_5 = (IVariable) name_i_5.resolveBinding();
|
||||||
|
assertNotNull(binding_i_5);
|
||||||
|
assertEquals(binding_i, binding_i_5);
|
||||||
|
|
||||||
|
IVariable binding_a_1 = (IVariable) name_a_1.resolveBinding();
|
||||||
|
assertNotNull(binding_a_1);
|
||||||
|
assertEquals(binding_a, binding_a_1);
|
||||||
|
|
||||||
|
IVariable binding_a_2 = (IVariable) name_a_2.resolveBinding();
|
||||||
|
assertNotNull(binding_a_2);
|
||||||
|
assertEquals(binding_a, binding_a_2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test a declaration inside a upc_forall definition.
|
||||||
|
*/
|
||||||
|
public void testUPCForall2() throws Exception {
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
sb.append("int main() {\n");//$NON-NLS-1$
|
||||||
|
sb.append(" shared float *a;\n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_forall(int i=0; i<N; i++; &a[i]) { \n");//$NON-NLS-1$
|
||||||
|
sb.append(" a[i] = 99; \n");//$NON-NLS-1$
|
||||||
|
sb.append(" } \n");//$NON-NLS-1$
|
||||||
|
sb.append("}\n");//$NON-NLS-1$
|
||||||
|
String code = sb.toString();
|
||||||
|
|
||||||
|
IASTTranslationUnit tu = parse(code);
|
||||||
|
|
||||||
|
IScope globalScope = tu.getScope();
|
||||||
|
assertNotNull(globalScope);
|
||||||
|
|
||||||
|
IASTDeclaration[] declarations = tu.getDeclarations();
|
||||||
|
assertNotNull(declarations);
|
||||||
|
assertEquals(1, declarations.length);
|
||||||
|
|
||||||
|
IASTFunctionDefinition main = (IASTFunctionDefinition) declarations[0];
|
||||||
|
IASTStatement[] body = ((IASTCompoundStatement)main.getBody()).getStatements();
|
||||||
|
assertEquals(2, body.length);
|
||||||
|
|
||||||
|
IASTSimpleDeclaration decl_a = (IASTSimpleDeclaration)((IASTDeclarationStatement)body[0]).getDeclaration();
|
||||||
|
IVariable binding_a = (IVariable) decl_a.getDeclarators()[0].getName().resolveBinding();
|
||||||
|
|
||||||
|
IUPCASTForallStatement forall = (IUPCASTForallStatement) body[1];
|
||||||
|
|
||||||
|
IASTSimpleDeclaration decl_i = (IASTSimpleDeclaration)((IASTDeclarationStatement)forall.getInitializerStatement()).getDeclaration();
|
||||||
|
IVariable binding_i = (IVariable) decl_i.getDeclarators()[0].getName().resolveBinding();
|
||||||
|
|
||||||
|
IASTBinaryExpression expr2 = (IASTBinaryExpression)forall.getConditionExpression();
|
||||||
|
IASTName name_i_2 = ((IASTIdExpression)expr2.getOperand1()).getName();
|
||||||
|
|
||||||
|
IASTUnaryExpression expr3 = (IASTUnaryExpression)forall.getIterationExpression();
|
||||||
|
IASTName name_i_3 = ((IASTIdExpression)expr3.getOperand()).getName();
|
||||||
|
|
||||||
|
IASTUnaryExpression expr4 = (IASTUnaryExpression)forall.getAffinityExpresiion();
|
||||||
|
IASTName name_i_4 = ((IASTIdExpression)((IASTArraySubscriptExpression)expr4.getOperand()).getSubscriptExpression()).getName();
|
||||||
|
IASTName name_a_1 = ((IASTIdExpression)((IASTArraySubscriptExpression)expr4.getOperand()).getArrayExpression()).getName();
|
||||||
|
|
||||||
|
IASTBinaryExpression expr5 = (IASTBinaryExpression)((IASTExpressionStatement)((IASTCompoundStatement)forall.getBody()).getStatements()[0]).getExpression();
|
||||||
|
IASTName name_i_5 = ((IASTIdExpression)((IASTArraySubscriptExpression)expr5.getOperand1()).getSubscriptExpression()).getName();
|
||||||
|
IASTName name_a_2 = ((IASTIdExpression)((IASTArraySubscriptExpression)expr5.getOperand1()).getArrayExpression()).getName();
|
||||||
|
|
||||||
|
// test binding resolution
|
||||||
|
IVariable binding_i_2 = (IVariable) name_i_2.resolveBinding();
|
||||||
|
assertNotNull(binding_i_2);
|
||||||
|
assertEquals(binding_i, binding_i_2);
|
||||||
|
|
||||||
|
IVariable binding_i_3 = (IVariable) name_i_3.resolveBinding();
|
||||||
|
assertNotNull(binding_i_3);
|
||||||
|
assertEquals(binding_i, binding_i_3);
|
||||||
|
|
||||||
|
IVariable binding_i_4 = (IVariable) name_i_4.resolveBinding();
|
||||||
|
assertNotNull(binding_i_4);
|
||||||
|
assertEquals(binding_i, binding_i_4);
|
||||||
|
|
||||||
|
IVariable binding_i_5 = (IVariable) name_i_5.resolveBinding();
|
||||||
|
assertNotNull(binding_i_5);
|
||||||
|
assertEquals(binding_i, binding_i_5);
|
||||||
|
|
||||||
|
IVariable binding_a_1 = (IVariable) name_a_1.resolveBinding();
|
||||||
|
assertNotNull(binding_a_1);
|
||||||
|
assertEquals(binding_a, binding_a_1);
|
||||||
|
|
||||||
|
IVariable binding_a_2 = (IVariable) name_a_2.resolveBinding();
|
||||||
|
assertNotNull(binding_a_2);
|
||||||
|
assertEquals(binding_a, binding_a_2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test 'continue' inside upc_forall
|
||||||
|
*/
|
||||||
|
public void testUPCForall3() throws Exception {
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
sb.append("int main() {\n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_forall(int i=0; i<N; i++; continue) { \n");//$NON-NLS-1$
|
||||||
|
sb.append(" } \n");//$NON-NLS-1$
|
||||||
|
sb.append("}\n");//$NON-NLS-1$
|
||||||
|
String code = sb.toString();
|
||||||
|
|
||||||
|
IASTTranslationUnit tu = parse(code);
|
||||||
|
|
||||||
|
IASTDeclaration[] declarations = tu.getDeclarations();
|
||||||
|
assertNotNull(declarations);
|
||||||
|
assertEquals(1, declarations.length);
|
||||||
|
|
||||||
|
IASTFunctionDefinition main = (IASTFunctionDefinition) declarations[0];
|
||||||
|
IASTStatement[] body = ((IASTCompoundStatement)main.getBody()).getStatements();
|
||||||
|
assertEquals(1, body.length);
|
||||||
|
|
||||||
|
|
||||||
|
IUPCASTForallStatement forall = (IUPCASTForallStatement) body[0];
|
||||||
|
|
||||||
|
assertTrue(forall.isAffinityContinue());
|
||||||
|
assertNull(forall.getAffinityExpresiion());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void testUPCSynchronizationStatment() throws Exception {
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
sb.append("int main() {\n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_notify 1;\n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_notify;\n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_wait 1;\n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_wait;\n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_barrier 1;\n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_barrier;\n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_fence;\n");//$NON-NLS-1$
|
||||||
|
sb.append("}\n");//$NON-NLS-1$
|
||||||
|
String code = sb.toString();
|
||||||
|
|
||||||
|
IASTTranslationUnit tu = parse(code);
|
||||||
|
|
||||||
|
IASTDeclaration[] declarations = tu.getDeclarations();
|
||||||
|
assertNotNull(declarations);
|
||||||
|
assertEquals(1, declarations.length);
|
||||||
|
|
||||||
|
IASTFunctionDefinition main = (IASTFunctionDefinition) declarations[0];
|
||||||
|
IASTStatement[] body = ((IASTCompoundStatement)main.getBody()).getStatements();
|
||||||
|
assertEquals(7, body.length);
|
||||||
|
|
||||||
|
IUPCASTSynchronizationStatement stat;
|
||||||
|
|
||||||
|
stat = (IUPCASTSynchronizationStatement) body[0];
|
||||||
|
assertEquals(stat.getStatementKind(), IUPCASTSynchronizationStatement.st_upc_notify);
|
||||||
|
assertNotNull(stat.getBarrierExpression());
|
||||||
|
|
||||||
|
stat = (IUPCASTSynchronizationStatement) body[1];
|
||||||
|
assertEquals(stat.getStatementKind(), IUPCASTSynchronizationStatement.st_upc_notify);
|
||||||
|
assertNull(stat.getBarrierExpression());
|
||||||
|
|
||||||
|
stat = (IUPCASTSynchronizationStatement) body[2];
|
||||||
|
assertEquals(stat.getStatementKind(), IUPCASTSynchronizationStatement.st_upc_wait);
|
||||||
|
assertNotNull(stat.getBarrierExpression());
|
||||||
|
|
||||||
|
stat = (IUPCASTSynchronizationStatement) body[3];
|
||||||
|
assertEquals(stat.getStatementKind(), IUPCASTSynchronizationStatement.st_upc_wait);
|
||||||
|
assertNull(stat.getBarrierExpression());
|
||||||
|
|
||||||
|
stat = (IUPCASTSynchronizationStatement) body[4];
|
||||||
|
assertEquals(stat.getStatementKind(), IUPCASTSynchronizationStatement.st_upc_barrier);
|
||||||
|
assertNotNull(stat.getBarrierExpression());
|
||||||
|
|
||||||
|
stat = (IUPCASTSynchronizationStatement) body[5];
|
||||||
|
assertEquals(stat.getStatementKind(), IUPCASTSynchronizationStatement.st_upc_barrier);
|
||||||
|
assertNull(stat.getBarrierExpression());
|
||||||
|
|
||||||
|
stat = (IUPCASTSynchronizationStatement) body[6];
|
||||||
|
assertEquals(stat.getStatementKind(), IUPCASTSynchronizationStatement.st_upc_fence);
|
||||||
|
assertNull(stat.getBarrierExpression());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testUPCSizeofExpressions() throws Exception {
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
sb.append("int main() {\n");//$NON-NLS-1$
|
||||||
|
sb.append(" sizeof(int); \n");//$NON-NLS-1$
|
||||||
|
sb.append(" sizeof x; \n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_localsizeof(int); \n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_localsizeof x; \n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_blocksizeof(int); \n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_blocksizeof x; \n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_elemsizeof(int); \n");//$NON-NLS-1$
|
||||||
|
sb.append(" upc_elemsizeof x; \n");//$NON-NLS-1$
|
||||||
|
sb.append("}\n");//$NON-NLS-1$
|
||||||
|
String code = sb.toString();
|
||||||
|
|
||||||
|
IASTTranslationUnit tu = parse(code);
|
||||||
|
|
||||||
|
IASTDeclaration[] declarations = tu.getDeclarations();
|
||||||
|
assertNotNull(declarations);
|
||||||
|
assertEquals(1, declarations.length);
|
||||||
|
|
||||||
|
IASTFunctionDefinition main = (IASTFunctionDefinition) declarations[0];
|
||||||
|
IASTStatement[] body = ((IASTCompoundStatement)main.getBody()).getStatements();
|
||||||
|
assertEquals(8, body.length);
|
||||||
|
|
||||||
|
IASTUnaryExpression cexpr;
|
||||||
|
|
||||||
|
cexpr = (IASTUnaryExpression)((IASTExpressionStatement)body[0]).getExpression();
|
||||||
|
assertEquals(IASTUnaryExpression.op_sizeof, cexpr.getOperator());
|
||||||
|
|
||||||
|
cexpr = (IASTUnaryExpression)((IASTExpressionStatement)body[1]).getExpression();
|
||||||
|
assertEquals(IASTUnaryExpression.op_sizeof, cexpr.getOperator());
|
||||||
|
|
||||||
|
IUPCASTSizeofExpression expr;
|
||||||
|
|
||||||
|
expr = (IUPCASTSizeofExpression)((IASTExpressionStatement)body[2]).getExpression();
|
||||||
|
assertEquals(IUPCASTSizeofExpression.op_upc_localsizeof, expr.getUPCSizeofOperator());
|
||||||
|
|
||||||
|
expr = (IUPCASTSizeofExpression)((IASTExpressionStatement)body[3]).getExpression();
|
||||||
|
assertEquals(IUPCASTSizeofExpression.op_upc_localsizeof, expr.getUPCSizeofOperator());
|
||||||
|
|
||||||
|
expr = (IUPCASTSizeofExpression)((IASTExpressionStatement)body[4]).getExpression();
|
||||||
|
assertEquals(IUPCASTSizeofExpression.op_upc_blocksizeof, expr.getUPCSizeofOperator());
|
||||||
|
|
||||||
|
expr = (IUPCASTSizeofExpression)((IASTExpressionStatement)body[5]).getExpression();
|
||||||
|
assertEquals(IUPCASTSizeofExpression.op_upc_blocksizeof, expr.getUPCSizeofOperator());
|
||||||
|
|
||||||
|
expr = (IUPCASTSizeofExpression)((IASTExpressionStatement)body[6]).getExpression();
|
||||||
|
assertEquals(IUPCASTSizeofExpression.op_upc_elemsizeof, expr.getUPCSizeofOperator());
|
||||||
|
|
||||||
|
expr = (IUPCASTSizeofExpression)((IASTExpressionStatement)body[7]).getExpression();
|
||||||
|
assertEquals(IUPCASTSizeofExpression.op_upc_elemsizeof, expr.getUPCSizeofOperator());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue