+ * Where # is num or empty if {@code empty} is {@code true})
+ */
private String processParallelPattern(String pattern, boolean empty, int num){
+ Assert.isTrue(num > 0);
+
int start = pattern.indexOf(PARALLEL_PATTERN_NUM_START);
int end = -1;
boolean hasStartChar = false;
@@ -1190,6 +1251,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return args;
}
+ @Override
public String getErrorParserIds() {
String ids = errorParserIds;
if (ids == null) {
@@ -1201,6 +1263,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return ids;
}
+ @Override
public String[] getErrorParserList() {
String parserIDs = getErrorParserIds();
String[] errorParsers = null;
@@ -1223,6 +1286,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return errorParsers;
}
+ @Override
public void setCommand(String cmd) {
if(getCommand().equals(cmd)) return;
if (cmd == null && command == null) return;
@@ -1232,16 +1296,17 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
}
}
+ @Override
public void setArguments(String newArgs) {
if(getArguments().equals(newArgs))
return;
if(newArgs != null){
String stopOnErrCmd = getStopOnErrCmd(isStopOnError());
- String parallelBuildCmd = isParallelBuildOn() ? getParallelizationCmd(getParallelizationNum()) : EMPTY_STRING;
+ String parallelCmd = isParallelBuildOn() ? getParallelizationCmd(getParallelizationNum()) : EMPTY_STRING;
newArgs = removeCmd(newArgs, stopOnErrCmd);
- newArgs = removeCmd(newArgs, parallelBuildCmd);
+ newArgs = removeCmd(newArgs, parallelCmd);
}
setArgumentsAttribute(newArgs);
}
@@ -1254,6 +1319,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
}
}
+ @Override
public void setErrorParserIds(String ids) {
String currentIds = getErrorParserIds();
if (ids == null && currentIds == null) return;
@@ -1263,11 +1329,13 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
}
}
+ @Override
public void setIsAbstract(boolean b) {
isAbstract = new Boolean(b);
setDirty(true);
}
+ @Override
public IConfigurationElement getBuildFileGeneratorElement() {
if (buildFileGeneratorElement == null) {
if (superClass != null) {
@@ -1277,6 +1345,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return buildFileGeneratorElement;
}
+ @Override
public IManagedBuilderMakefileGenerator getBuildFileGenerator(){
IConfigurationElement element = getBuildFileGeneratorElement();
if (element != null) {
@@ -1299,6 +1368,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
}
+ @Override
public void setBuildFileGeneratorElement(IConfigurationElement element) {
buildFileGeneratorElement = element;
setDirty(true);
@@ -1344,6 +1414,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
}
}
+ @Override
public String getConvertToId() {
if (convertToId == null) {
// If I have a superClass, ask it
@@ -1356,6 +1427,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return convertToId;
}
+ @Override
public void setConvertToId(String convertToId) {
if (convertToId == null && this.convertToId == null) return;
if (convertToId == null || this.convertToId == null || !convertToId.equals(this.convertToId)) {
@@ -1365,6 +1437,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return;
}
+ @Override
public String getVersionsSupported() {
if (versionsSupported == null) {
// If I have a superClass, ask it
@@ -1377,6 +1450,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return versionsSupported;
}
+ @Override
public void setVersionsSupported(String versionsSupported) {
if (versionsSupported == null && this.versionsSupported == null) return;
if (versionsSupported == null || this.versionsSupported == null || !versionsSupported.equals(this.versionsSupported)) {
@@ -1386,18 +1460,21 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return;
}
+ @Override
public IFileContextBuildMacroValues getFileContextBuildMacroValues(){
if(fileContextBuildMacroValues == null && superClass != null)
return getSuperClass().getFileContextBuildMacroValues();
return fileContextBuildMacroValues;
}
+ @Override
public String getBuilderVariablePattern(){
if(builderVariablePattern == null && superClass != null)
return getSuperClass().getBuilderVariablePattern();
return builderVariablePattern;
}
+ @Override
public boolean isVariableCaseSensitive(){
if(isVariableCaseSensitive == null){
if(superClass != null)
@@ -1407,12 +1484,14 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return isVariableCaseSensitive.booleanValue();
}
+ @Override
public String[] getReservedMacroNames(){
if(reservedMacroNames == null && superClass != null)
return getSuperClass().getReservedMacroNames();
return reservedMacroNames;
}
+ @Override
public IReservedMacroNameSupplier getReservedMacroNameSupplier(){
if(reservedMacroNameSupplier == null && reservedMacroNameSupplierElement != null){
try{
@@ -1617,6 +1696,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return currentMbsVersionConversionElement;
}
+ @Override
public CBuildData getBuildData() {
return fBuildData;
}
@@ -1627,6 +1707,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
// return null;
// }
+ @Override
public String[] getErrorParsers() {
if(isCustomBuilder() && customizedErrorParserIds != null)
return customizedErrorParserIds.clone();
@@ -1646,6 +1727,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
customizedErrorParserIds = ids != null ? (String[])ids.clone() : ids;
}
+ @Override
public void setErrorParsers(String[] parsers) throws CoreException {
if(isCustomBuilder()){
customizedErrorParserIds = (parsers != null && parsers.length != 0) ? (String[])parsers.clone() : parsers;
@@ -1660,6 +1742,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return this;//!isExtensionBuilder ? (Object)this : (Object)getParent().getParent();
}
+ @Override
public String getBuildArguments() {
String args = getArguments();
IBuildMacroProvider provider = ManagedBuildManager.getBuildMacroProvider();
@@ -1672,6 +1755,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return args;
}
+ @Override
public IPath getBuildCommand() {
String command = getCommand();
IBuildMacroProvider provider = ManagedBuildManager.getBuildMacroProvider();
@@ -1697,6 +1781,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return buildPath;
}
+ @Override
public void setBuildPath(String path){
setBuildPathAttribute(path);
}
@@ -1706,6 +1791,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
setDirty(true);
}
+ @Override
public String getBuildPath(){
if(isManagedBuildOn())
return getDefaultBuildPath();
@@ -1791,6 +1877,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return isWorkspaceBuildPath.booleanValue();
}
*/
+ @Override
public IPath getBuildLocation() {
String path = getBuildPath();
@@ -1804,10 +1891,12 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return new Path(path);
}
+ @Override
public boolean isDefaultBuildCmd() {
return isExtensionBuilder || (command == null && args == null /*&& stopOnErr == null && parallelBuildOn == null && parallelNum == null */ && superClass != null);
}
+ @Override
public boolean isStopOnError() {
if(stopOnErr == null){
if(superClass != null){
@@ -1818,20 +1907,24 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return stopOnErr.booleanValue();
}
+ @Override
public void setBuildArguments(String args) throws CoreException {
setArguments(args);
}
+ @Override
public void setBuildCommand(IPath command) throws CoreException {
String cmd = command != null ? command.toString() : null;
setCommand(cmd);
}
+ @Override
public void setBuildLocation(IPath location) throws CoreException {
String path = location != null ? location.toString() : null;
setBuildPath(path);
}
+ @Override
public void setStopOnError(boolean on) throws CoreException {
if(isStopOnError() == on)
return;
@@ -1847,6 +1940,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
setDirty(true);
}
+ @Override
public void setUseDefaultBuildCmd(boolean on) throws CoreException {
if(!isExtensionBuilder && superClass != null){
if(on){
@@ -1870,6 +1964,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return autoBuildTarget;
}
+ @Override
public String getAutoBuildTarget() {
String attr = getAutoBuildTargetAttribute();
@@ -1898,6 +1993,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return cleanBuildTarget;
}
+ @Override
public String getCleanBuildTarget() {
String attr = getCleanBuildTargetAttribute();
@@ -1917,6 +2013,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
}
+ @Override
public String getFullBuildTarget() {
return getIncrementalBuildTarget();
}
@@ -1930,6 +2027,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return incrementalBuildTarget;
}
+ @Override
public String getIncrementalBuildTarget() {
String attr = getIncrementalBuildTargetAttribute();
@@ -1948,6 +2046,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return attr;
}
+ @Override
public boolean isAutoBuildEnable() {
if(autoBuildEnabled == null){
if(superClass != null)
@@ -1957,6 +2056,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return autoBuildEnabled.booleanValue();
}
+ @Override
public boolean isCleanBuildEnabled() {
if(cleanBuildEnabled == null){
if(superClass != null)
@@ -1966,10 +2066,12 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return cleanBuildEnabled.booleanValue();
}
+ @Override
public boolean isFullBuildEnabled() {
return isIncrementalBuildEnabled();
}
+ @Override
public boolean isIncrementalBuildEnabled() {
if(incrementalBuildEnabled == null){
if(superClass != null)
@@ -1979,38 +2081,47 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return incrementalBuildEnabled.booleanValue();
}
+ @Override
public void setAutoBuildEnable(boolean enabled) throws CoreException {
autoBuildEnabled = Boolean.valueOf(enabled);
}
+ @Override
public void setAutoBuildTarget(String target) throws CoreException {
autoBuildTarget = target;
}
+ @Override
public void setCleanBuildEnable(boolean enabled) throws CoreException {
cleanBuildEnabled = Boolean.valueOf(enabled);
}
+ @Override
public void setCleanBuildTarget(String target) throws CoreException {
cleanBuildTarget = target;
}
+ @Override
public void setFullBuildEnable(boolean enabled) throws CoreException {
setIncrementalBuildEnable(enabled);
}
+ @Override
public void setFullBuildTarget(String target) throws CoreException {
setIncrementalBuildTarget(target);
}
+ @Override
public void setIncrementalBuildEnable(boolean enabled) throws CoreException {
incrementalBuildEnabled = Boolean.valueOf(enabled);
}
+ @Override
public void setIncrementalBuildTarget(String target) throws CoreException {
incrementalBuildTarget = target;
}
+ @Override
public boolean appendEnvironment() {
if(appendEnvironment == null){
if(superClass != null){
@@ -2021,6 +2132,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return appendEnvironment.booleanValue();
}
+ @Override
public String getBuildAttribute(String name, String defaultValue) {
String result = null;
if(BUILD_TARGET_INCREMENTAL.equals(name)){
@@ -2156,12 +2268,14 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
}
+ @Override
public Map getEnvironment() {
if(customizedEnvironment != null)
return cloneMap(customizedEnvironment);
return null;
}
+ @Override
public Map getExpandedEnvironment() throws CoreException {
if(customizedEnvironment != null){
Map expanded = cloneMap(customizedEnvironment);
@@ -2183,10 +2297,12 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return null;
}
+ @Override
public void setAppendEnvironment(boolean append) throws CoreException {
appendEnvironment = Boolean.valueOf(append);
}
+ @Override
public void setBuildAttribute(String name, String value)
throws CoreException {
if(BUILD_TARGET_INCREMENTAL.equals(name)){
@@ -2255,10 +2371,12 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return customBuildProperties;
}
+ @Override
public void setEnvironment(Map env) throws CoreException {
customizedEnvironment = new HashMap(env);
}
+ @Override
public boolean isCustomBuilder() {
if(!isExtensionBuilder && getParent().getBuilder() != this)
return true;
@@ -2271,6 +2389,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return null;
}
+ @Override
public boolean isManagedBuildOn() {
IConfiguration cfg = getConfguration();
if(cfg != null){
@@ -2295,14 +2414,17 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return managedBuildOn;
}
+ @Override
public void setManagedBuildOn(boolean on) throws CoreException {
managedBuildOn = Boolean.valueOf(on);
}
+ @Override
public boolean canKeepEnvironmentVariablesInBuildfile() {
return BuildMacroProvider.canKeepMacrosInBuildfile(this);
}
+ @Override
public boolean keepEnvironmentVariablesInBuildfile() {
if(keepEnvVarInBuildfile == null){
if(superClass != null)
@@ -2312,10 +2434,12 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return keepEnvVarInBuildfile.booleanValue();
}
+ @Override
public void setKeepEnvironmentVariablesInBuildfile(boolean keep) {
keepEnvVarInBuildfile = Boolean.valueOf(keep);
}
+ @Override
public boolean supportsCustomizedBuild() {
if(fSupportsCustomizedBuild == null){
IManagedBuilderMakefileGenerator makeGen = getBuildFileGenerator();
@@ -2327,6 +2451,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return fSupportsCustomizedBuild.booleanValue();
}
+ @Override
public boolean supportsBuild(boolean managed) {
if(supportsManagedBuild == null){
if(superClass != null)
@@ -2340,6 +2465,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
parent = toolChain;
}
+ @Override
public boolean matches(IBuilder builder){
if(builder == this)
return true;
@@ -2351,6 +2477,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return rBld == ManagedBuildManager.getRealBuilder(builder);
}
+ @Override
public MatchKey getMatchKey() {
if(isAbstract())
return null;
@@ -2359,6 +2486,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return new MatchKey(this);
}
+ @Override
public void setIdenticalList(List list) {
identicalList = list;
}
@@ -2372,10 +2500,12 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return name;
}
+ @Override
public List getIdenticalList() {
return identicalList;
}
+ @Override
public boolean isInternalBuilder() {
IBuilder internalBuilder = ManagedBuildManager.getInternalBuilder();
for(IBuilder builder = this; builder != null; builder = builder.getSuperClass()){
@@ -2385,42 +2515,92 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return false;
}
- public int getParallelizationNum() {
- if(supportsParallelBuild())
- return getParallelizationNumAttribute();
- return 1;
+ /**
+ * Returns the optimal number of parallel jobs.
+ * The number is the number of available processors on the machine.
+ *
+ * The function never returns number smaller than 1.
+ */
+ public int getOptimalParallelJobNum() {
+ return Runtime.getRuntime().availableProcessors();
}
- public int getParallelizationNumAttribute(){
- if(parallelNum == null){
+ /**
+ * Returns the internal representation of maximum number of parallel jobs
+ * to be used for a build.
+ * Note that negative number represents "optimal" value.
+ *
+ * The value of the number is encoded as follows:
+ *
+ * Status Returns
+ * No parallel 1
+ * Optimal -CPU# (negative number of processors)
+ * Specific >0 (positive number)
+ * Unlimited Builder.UNLIMITED_JOBS
+ *
+ */
+ public int getParallelizationNumAttribute() {
+ if (!isParallelBuildOn())
+ return 1;
+
+ if(parallelNumberAttribute == null){
if(superClass != null){
return ((Builder)superClass).getParallelizationNumAttribute();
}
return 1;
}
- return parallelNum.intValue();
+ return parallelNumberAttribute.intValue();
}
- public void setParallelizationNum(int num) throws CoreException {
-// if(num == 0 || supportsParallelBuild()){
- Integer newParallelNum = new Integer(num);
+ private void setParallelizationNumAttribute(int parallelNumber) {
+ isParallelBuildEnabled = (parallelNumber != 1);
+ if (parallelNumber > 0) {
+ parallelNumberAttribute = parallelNumber;
+ } else {
+ // "optimal"
+ parallelNumberAttribute = -getOptimalParallelJobNum();
+ }
+ }
+
+ @Override
+ public int getParallelizationNum() {
+ return Math.abs(getParallelizationNumAttribute());
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @param jobs - maximum number of jobs. There are 2 special cases:
+ * - any number <=0 is interpreted as setting "optimal" property,
+ * the value of the number itself is ignored in this case
+ * - value 1 will turn parallel mode off.
+ */
+ @Override
+ public void setParallelizationNum(int jobs) throws CoreException {
+ if (!supportsParallelBuild())
+ return;
+
+ if (parallelNumberAttribute == null || parallelNumberAttribute != jobs) {
String curCmd = getParallelizationCmd(getParallelizationNum());
String args = getArgumentsAttribute();
String updatedArgs = removeCmd(args, curCmd);
- if(!updatedArgs.equals(args)){
+ if (!updatedArgs.equals(args)) {
setArgumentsAttribute(updatedArgs);
}
- parallelNum = newParallelNum;
+
+ setParallelizationNumAttribute(jobs);
setDirty(true);
-// }
+ }
}
+ @Override
public boolean supportsParallelBuild() {
if(isInternalBuilder())
return true;
return getParrallelBuildCmd().length() != 0;
}
+ @Override
public boolean supportsStopOnError(boolean on) {
if(isInternalBuilder())
return true;
@@ -2446,42 +2626,48 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return ignoreErrCmd;
}
- public String getParrallelBuildCmd(){
- if(parallelBuildCmd == null){
- if(superClass != null){
- return ((Builder)superClass).getParrallelBuildCmd();
+ public String getParrallelBuildCmd() {
+ if (parallelBuildCmd == null) {
+ if (superClass != null) {
+ return ((Builder) superClass).getParrallelBuildCmd();
}
return EMPTY_STRING;
}
return parallelBuildCmd;
}
+ @Override
public boolean isParallelBuildOn() {
- if(parallelBuildOn == null){
- if(superClass != null){
+ if (!supportsParallelBuild()) {
+ return false;
+ }
+ if (isParallelBuildEnabled == null) {
+ if (superClass != null) {
return getSuperClass().isParallelBuildOn();
}
return false;
}
- return parallelBuildOn.booleanValue();
+ return isParallelBuildEnabled.booleanValue();
}
- public void setParallelBuildOn(boolean on) throws CoreException{
- if(isParallelBuildOn() == on)
- return;
- if(on && !supportsParallelBuild())
- return;
-
- String curCmd = getParallelizationCmd(getParallelizationNum());
- String args = getArgumentsAttribute();
- String updatedArgs = removeCmd(args, curCmd);
- if(!updatedArgs.equals(args)){
- setArgumentsAttribute(updatedArgs);
+ /**
+ * {@inheritDoc}
+ *
+ * @param on - the flag to enable or disable parallel mode.
+ * {@code true} to enable, in this case the maximum number of jobs
+ * will be set to "optimal" number, see {@link #getOptimalParallelJobNum()}.
+ * {@code false} to disable, the number of jobs will be set to 1.
+ */
+ @Override
+ public void setParallelBuildOn(boolean on) throws CoreException {
+ if (on) {
+ // set "optimal" jobs by default when enabling parallel build
+ setParallelizationNum(-1);
+ } else {
+ setParallelizationNum(1);
}
- parallelBuildOn = Boolean.valueOf(on);
- setDirty(true);
}
-
+
public Set contributeErrorParsers(Set set){
if(getErrorParserIds() != null){
if(set == null)
@@ -2521,6 +2707,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
}
}
+ @Override
public boolean isSystemObject() {
if(isTest)
return true;
@@ -2533,6 +2720,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return false;
}
+ @Override
public String getUniqueRealName() {
String name = getName();
if(name == null){
@@ -2604,6 +2792,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return num;
}
+ @Override
public int compareTo(Builder other) {
if(other.isSystemObject() != isSystemObject())
return isSystemObject() ? 1 : -1;
@@ -2611,30 +2800,37 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return getSuperClassNum() - other.getSuperClassNum();
}
+ @Override
public IRealBuildObjectAssociation getExtensionObject() {
return (Builder)ManagedBuildManager.getExtensionBuilder(this);
}
+ @Override
public IRealBuildObjectAssociation[] getIdenticBuildObjects() {
return (IRealBuildObjectAssociation[])ManagedBuildManager.findIdenticalBuilders(this);
}
+ @Override
public IRealBuildObjectAssociation getRealBuildObject() {
return (Builder)ManagedBuildManager.getRealBuilder(this);
}
+ @Override
public IRealBuildObjectAssociation getSuperClassObject() {
return (Builder)getSuperClass();
}
+ @Override
public final int getType() {
return OBJECT_BUILDER;
}
+ @Override
public boolean isRealBuildObject() {
return ManagedBuildManager.getRealBuilder(this) == this;
}
+ @Override
public boolean isExtensionBuildObject() {
return isExtensionElement();
}
@@ -2643,6 +2839,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return getUniqueRealName();
}
+ @Override
public ICommandLauncher getCommandLauncher() {
if(fCommandLauncher != null)
return fCommandLauncher;
@@ -2664,6 +2861,7 @@ public class Builder extends HoldsOptions implements IBuilder, IMatchKeyProvider
return fCommandLauncher;
}
+ @Override
public AbstractBuildRunner getBuildRunner() throws CoreException {
// Already defined
if (fBuildRunner != null)
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java
index a2093855a1c..d5ce4df6687 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java
@@ -753,7 +753,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
* E L E M E N T A T T R I B U T E R E A D E R S A N D W R I T E R S
*/
- /* (non-Javadoc)
+ /**
* Initialize the configuration information from an element in the
* manifest file or provided by a dynamicElementProvider
*
@@ -807,7 +807,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
isTest = Boolean.valueOf(tmp).booleanValue();
}
- /* (non-Javadoc)
+ /**
* Initialize the configuration information from the XML element
* specified in the argument
*
@@ -878,8 +878,8 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
if (element.getAttribute(CLEAN_COMMAND) != null) {
cleanCommand = SafeStringInterner.safeIntern(element.getAttribute(CLEAN_COMMAND));
}
-
- // Get the pre-build and post-build commands
+
+ // Get the pre-build and post-build commands
if (element.getAttribute(PREBUILD_STEP) != null) {
prebuildStep = SafeStringInterner.safeIntern(element.getAttribute(PREBUILD_STEP));
}
@@ -895,7 +895,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
if (element.getAttribute(POSTANNOUNCEBUILD_STEP) != null) {
postannouncebuildStep = SafeStringInterner.safeIntern(element.getAttribute(POSTANNOUNCEBUILD_STEP));
- }
+ }
}
/**
@@ -974,6 +974,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getParent()
*/
+ @Override
public IConfiguration getParent() {
return parent;
}
@@ -981,6 +982,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getOwner()
*/
+ @Override
public IResource getOwner() {
if (managedProject != null)
return managedProject.getOwner();
@@ -992,6 +994,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getProjectType()
*/
+ @Override
public IProjectType getProjectType() {
return projectType;
}
@@ -999,6 +1002,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getManagedProject()
*/
+ @Override
public IManagedProject getManagedProject() {
return managedProject;
}
@@ -1006,6 +1010,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getToolChain(IToolChain, String, String, boolean)
*/
+ @Override
public IToolChain createToolChain(IToolChain superClass, String Id, String name, boolean isExtensionElement) {
if(rootFolderInfo == null){
createRootFolderInfo();
@@ -1034,6 +1039,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getToolChain()
*/
+ @Override
public IToolChain getToolChain() {
return rootFolderInfo.getToolChain();
}
@@ -1041,6 +1047,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getResourceConfigurations()
*/
+ @Override
public IResourceConfiguration[] getResourceConfigurations() {
return (IResourceConfiguration[])rcInfos.getResourceInfos(ICSettingBase.SETTING_FILE, IResourceConfiguration.class);
}
@@ -1048,6 +1055,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#getResourceConfiguration(java.lang.String)
*/
+ @Override
public IResourceConfiguration getResourceConfiguration(String resPath) {
return rcInfos.getFileInfo(new Path(resPath).removeFirstSegments(1));
}
@@ -1055,6 +1063,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#getFilteredTools()
*/
+ @Override
public ITool[] getFilteredTools() {
return rootFolderInfo.getFilteredTools();
}
@@ -1062,6 +1071,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getTools()
*/
+ @Override
public ITool[] getTools() {
return rootFolderInfo.getTools();
}
@@ -1069,6 +1079,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#getTool(java.lang.String)
*/
+ @Override
public ITool getTool(String id) {
return rootFolderInfo.getTool(id);
}
@@ -1076,6 +1087,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#getToolsBySuperClassId(java.lang.String)
*/
+ @Override
public ITool[] getToolsBySuperClassId(String id) {
return rootFolderInfo.getToolsBySuperClassId(id);
}
@@ -1083,6 +1095,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#getTargetTool()
*/
+ @Override
public ITool getTargetTool() {
String[] targetToolIds = rootFolderInfo.getToolChain().getTargetToolList();
if (targetToolIds == null || targetToolIds.length == 0) return null;
@@ -1110,6 +1123,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#setToolCommand(org.eclipse.cdt.managedbuilder.core.ITool, java.lang.String)
*/
+ @Override
public String getToolCommand(ITool tool) {
// TODO: Do we need to verify that the tool is part of the configuration?
return tool.getToolCommand();
@@ -1118,6 +1132,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#setToolCommand(org.eclipse.cdt.managedbuilder.core.ITool, java.lang.String)
*/
+ @Override
public void setToolCommand(ITool tool, String command) {
// TODO: Do we need to verify that the tool is part of the configuration?
tool.setToolCommand(command);
@@ -1126,6 +1141,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#setOption(org.eclipse.cdt.core.build.managed.IOption, boolean)
*/
+ @Override
public IOption setOption(IHoldsOptions holder, IOption option, boolean value) throws BuildException {
return getRootFolderInfo().setOption(holder, option, value);
}
@@ -1133,6 +1149,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#setOption(org.eclipse.cdt.core.build.managed.IOption, java.lang.String)
*/
+ @Override
public IOption setOption(IHoldsOptions holder, IOption option, String value) throws BuildException {
return getRootFolderInfo().setOption(holder, option, value);
}
@@ -1140,6 +1157,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#setOption(org.eclipse.cdt.core.build.managed.IOption, java.lang.String[])
*/
+ @Override
public IOption setOption(IHoldsOptions holder, IOption option, String[] value) throws BuildException {
return getRootFolderInfo().setOption(holder, option, value);
}
@@ -1157,6 +1175,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
// rebuildNeeded = true;
}
+ @Override
public void removeResourceConfiguration(IResourceInfo resConfig) {
ManagedBuildManager.performValueHandlerEvent(resConfig,
IManagedOptionValueHandler.EVENT_CLOSE);
@@ -1182,6 +1201,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#getArtifactExtension()
*/
+ @Override
public String getArtifactExtension() {
String ext = getArtifactExtensionAttribute(true);
return ext != null ? ext : EMPTY_STRING;
@@ -1201,6 +1221,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getArtifactName()
*/
+ @Override
public String getArtifactName() {
if (artifactName == null) {
// If I have a parent, ask it
@@ -1218,6 +1239,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getBuildArguments()
*/
+ @Override
public String getBuildArguments() {
IToolChain tc = getToolChain();
IBuilder builder = tc.getBuilder();
@@ -1230,6 +1252,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getBuildCommand()
*/
+ @Override
public String getBuildCommand() {
IToolChain tc = getToolChain();
IBuilder builder = tc.getBuilder();
@@ -1244,6 +1267,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
*
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getPrebuildStep()
*/
+ @Override
public String getPrebuildStep() {
if (prebuildStep == null) {
// If I have a parent, ask it
@@ -1263,6 +1287,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
*
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getPostbuildStep()
*/
+ @Override
public String getPostbuildStep() {
if (postbuildStep == null) {
// If I have a parent, ask it
@@ -1282,6 +1307,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
*
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getPreannouncebuildStep()
*/
+ @Override
public String getPreannouncebuildStep() {
if (preannouncebuildStep == null) {
// If I have a parent, ask it
@@ -1301,6 +1327,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
*
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getPostannouncebuildStep()
*/
+ @Override
public String getPostannouncebuildStep() {
if (postannouncebuildStep == null) {
// If I have a parent, ask it
@@ -1320,6 +1347,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
*
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getCleanCommand()
*/
+ @Override
public String getCleanCommand() {
// Return the command used to remove files
if (cleanCommand == null) {
@@ -1342,6 +1370,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#getDescription()
*/
+ @Override
public String getDescription() {
if (description == null) {
// If I have a parent, ask it
@@ -1361,6 +1390,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
*
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#getErrorParserIds()
*/
+ @Override
public String getErrorParserIds() {
if (errorParserIds != null) {
return errorParserIds;
@@ -1396,6 +1426,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#getErrorParserList()
*/
+ @Override
public String[] getErrorParserList() {
Set set = contributeErrorParsers(null, true);
if(set != null){
@@ -1436,6 +1467,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#setArtifactExtension(java.lang.String)
*/
+ @Override
public void setArtifactExtension(String extension) {
if (extension == null && artifactExtension == null) return;
if (artifactExtension == null || extension == null || !artifactExtension.equals(extension)) {
@@ -1457,6 +1489,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#setArtifactName(java.lang.String)
*/
+ @Override
public void setArtifactName(String name) {
if (name == null && artifactName == null) return;
if (artifactName == null || name == null || !artifactName.equals(name)) {
@@ -1498,6 +1531,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#setErrorParserIds()
*/
+ @Override
public void setErrorParserIds(String ids) {
String currentIds = getErrorParserIds();
if (ids == null && currentIds == null) return;
@@ -1510,6 +1544,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#setCleanCommand()
*/
+ @Override
public void setCleanCommand(String command) {
if (command == null && cleanCommand == null) return;
if (cleanCommand == null || command == null || !cleanCommand.equals(command)) {
@@ -1521,6 +1556,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#setDescription(java.lang.String)
*/
+ @Override
public void setDescription(String description) {
if (description == null && this.description == null) return;
if (this.description == null || description == null || !description.equals(this.description)) {
@@ -1532,6 +1568,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#setBuildArguments()
*/
+ @Override
public void setBuildArguments(String makeArgs) {
IToolChain tc = getToolChain();
IBuilder builder = tc.getBuilder();
@@ -1554,6 +1591,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#setBuildCommand()
*/
+ @Override
public void setBuildCommand(String command) {
IToolChain tc = getToolChain();
IBuilder builder = tc.getBuilder();
@@ -1576,7 +1614,8 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#setPrebuildStep(java.lang.String)
*/
- public void setPrebuildStep(String step) {
+ @Override
+ public void setPrebuildStep(String step) {
if (step == null && prebuildStep == null) return;
if (prebuildStep == null || step == null || !prebuildStep.equals(step)) {
prebuildStep = step;
@@ -1589,7 +1628,8 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#setPostbuildStep(java.lang.String)
*/
- public void setPostbuildStep(String step) {
+ @Override
+ public void setPostbuildStep(String step) {
if (step == null && postbuildStep == null) return;
if (postbuildStep == null || step == null || !postbuildStep.equals(step)) {
postbuildStep = step;
@@ -1601,7 +1641,8 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#setPreannouncebuildStep(java.lang.String)
*/
- public void setPreannouncebuildStep(String announceStep) {
+ @Override
+ public void setPreannouncebuildStep(String announceStep) {
if (announceStep == null && preannouncebuildStep == null) return;
if (preannouncebuildStep == null || announceStep == null || !preannouncebuildStep.equals(announceStep)) {
preannouncebuildStep = announceStep;
@@ -1613,7 +1654,8 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.IConfiguration#setPostannouncebuildStep(java.lang.String)
*/
- public void setPostannouncebuildStep(String announceStep) {
+ @Override
+ public void setPostannouncebuildStep(String announceStep) {
if (announceStep == null && postannouncebuildStep == null) return;
if (postannouncebuildStep == null || announceStep == null || !postannouncebuildStep.equals(announceStep)) {
postannouncebuildStep = announceStep;
@@ -1625,6 +1667,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#isSupported()
*/
+ @Override
public boolean isSupported(){
IFolderInfo foInfo = getRootFolderInfo();
if(foInfo != null)
@@ -1635,6 +1678,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#isHeaderFile(java.lang.String)
*/
+ @Override
public boolean isHeaderFile(String ext) {
return getRootFolderInfo().isHeaderFile(ext);
}
@@ -1646,6 +1690,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#isExtensionElement()
*/
+ @Override
public boolean isExtensionElement() {
return isExtensionConfig;
}
@@ -1653,6 +1698,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#isDirty()
*/
+ @Override
public boolean isDirty() {
// This shouldn't be called for an extension configuration
if (isExtensionConfig) return false;
@@ -1673,10 +1719,12 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#needsRebuild()
*/
+ @Override
public boolean needsRebuild() {
return needsRebuild(true);
}
+ @Override
public boolean needsFullRebuild() {
return needsRebuild(false);
}
@@ -1700,6 +1748,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#setDirty(boolean)
*/
+ @Override
public void setDirty(boolean isDirty) {
// Override the dirty flag
this.isDirty = isDirty;
@@ -1716,6 +1765,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#setRebuildState(boolean)
*/
+ @Override
public void setRebuildState(boolean rebuild) {
if(isExtensionElement() && rebuild)
return;
@@ -1739,6 +1789,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#hasOverriddenBuildCommand()
*/
+ @Override
public boolean hasOverriddenBuildCommand() {
IBuilder builder = getToolChain().getBuilder();
if (builder != null) {
@@ -1793,21 +1844,24 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
((FolderInfo)getRootFolderInfo()).resetOptionSettings();
}
- /*
+ /**
* Create a resource configuration object for the passed-in file
*/
+ @Override
public IResourceConfiguration createResourceConfiguration(IFile file)
{
return createFileInfo(file.getFullPath().removeFirstSegments(1));
}
+ @Override
public IFileInfo createFileInfo(IPath path){
String resourceName = path.lastSegment();
String id = ManagedBuildManager.calculateChildId(getId(), path.toString());
return createFileInfo(path, id, resourceName);
}
+ @Override
public IFileInfo createFileInfo(IPath path, String id, String name){
IResourceInfo info = getResourceInfo(path, false);
IFileInfo fileInfo = null;
@@ -1820,6 +1874,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return fileInfo;
}
+ @Override
public IFileInfo createFileInfo(IPath path, IFolderInfo base, ITool baseTool, String id, String name){
if(base.getPath().equals(path))
return null;
@@ -1831,6 +1886,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return fileInfo;
}
+ @Override
public IFileInfo createFileInfo(IPath path, IFileInfo base, String id, String name){
if(base.getPath().equals(path))
return null;
@@ -1845,6 +1901,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#getEnvironmentVariableSupplier()
*/
+ @Override
public IConfigurationEnvironmentVariableSupplier getEnvironmentVariableSupplier(){
IToolChain toolChain = getToolChain();
if(toolChain != null)
@@ -1873,6 +1930,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#getBuildMacroSupplier()
*/
+ @Override
public IConfigurationBuildMacroSupplier getBuildMacroSupplier(){
IToolChain toolChain = getToolChain();
if(toolChain != null)
@@ -1884,6 +1942,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#isTemporary()
*/
+ @Override
public boolean isTemporary(){
return isTemporary;
}
@@ -1910,6 +1969,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
}
}
+ @Override
public ITool calculateTargetTool(){
ITool tool = getTargetTool();
@@ -1932,15 +1992,17 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return tool;
}
+ @Override
public ITool getToolFromOutputExtension(String extension) {
return getRootFolderInfo().getToolFromOutputExtension(extension);
}
+ @Override
public ITool getToolFromInputExtension(String sourceExtension) {
return getRootFolderInfo().getToolFromInputExtension(sourceExtension);
}
- /*
+ /**
* The resource delta passed to the builder is not always up-to-date
* for the given configuration because between two builds of the same configuration
* any number of other configuration builds may occur
@@ -2012,7 +2074,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
prefs.getBoolean(pref, false) : defaultValue;
}
*/
- /*
+ /**
* this method is used for enabling/disabling the internal builder
* for the given configuration
*
@@ -2129,7 +2191,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return null;
}
- /*
+ /**
* returns whether the internal builder is enabled
* @return boolean
*/
@@ -2137,7 +2199,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return getBuilder().isInternalBuilder();
}
- /*
+ /**
*
* sets the Internal Builder mode
*
@@ -2152,7 +2214,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
}
}
- /*
+ /**
* returns the Internal Builder mode
* if true, internal builder will ignore build errors while building,
* otherwise it will stop at the first build error
@@ -2164,73 +2226,73 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
}
/**
- *
* sets the Internal Builder Parallel mode
- *
* @param parallel if true, internal builder will use parallel mode
+ *
+ * @deprecated since CDT 9.0. Use {@link #setParallelDef(boolean)}
*/
+ @Deprecated
public void setInternalBuilderParallel(boolean parallel){
- if(getInternalBuilderParallel() == parallel)
- return;
-
- try {
- getEditableBuilder().setParallelBuildOn(parallel);
- } catch (CoreException e) {
- }
+ setParallelDef(parallel);
}
/**
* returns the Internal Builder parallel mode
* if true, internal builder will work in parallel mode
* otherwise it will use only one thread
- *
* @return boolean
+ *
+ * @deprecated since CDT 9.0. Use {@link #getParallelDef()}
*/
+ @Deprecated
public boolean getInternalBuilderParallel(){
- return getBuilder().isParallelBuildOn();
+ return getParallelDef();
}
/**
- * @param parallel if true, internal builder will use parallel mode
+ * Set parallel execution mode for the configuration's builder.
+ * @see Builder#setParallelBuildOn(boolean)
+ *
+ * @param parallel - the flag to enable or disable parallel mode.
*/
public void setParallelDef(boolean parallel){
if(getParallelDef() == parallel)
return;
- int num = getParallelNumber();
- if(num != 0){
- setParallelNumber(-num);
- } else {
- if(parallel){
- setParallelNumber(-1);
- } else {
- setParallelNumber(1);
- }
+ try {
+ getEditableBuilder().setParallelBuildOn(parallel);
+ } catch (CoreException e) {
+ ManagedBuilderCorePlugin.log(e);
}
}
/**
- * @return boolean
+ * Check if the configuration's builder is operating in parallel mode.
+ * @return {@code true} if parallel mode is enabled, {@code false} otherwise.
*/
public boolean getParallelDef(){
- int num = getBuilder().getParallelizationNum();
- return num <= 0;
+ return getBuilder().isParallelBuildOn();
}
/**
- * sets number of Parallel threads
+ * Sets maximum number of parallel threads/jobs to be used by builder.
+ *
+ * @param jobs - maximum number of jobs or threads. For details how
+ * the number is interpreted see {@link Builder#setParallelizationNum(int)}.
*/
- public void setParallelNumber(int n){
+ public void setParallelNumber(int jobs){
try {
- getEditableBuilder().setParallelizationNum(n);
+ getEditableBuilder().setParallelizationNum(jobs);
} catch (CoreException e) {
+ ManagedBuilderCorePlugin.log(e);
}
}
/**
- * returns number of Parallel threads
+ * Returns maximum number of parallel threads/jobs used by the configuration's builder.
+ * @see #setParallelDef(boolean)
*
- * @return int
+ * @return - maximum number of parallel threads or jobs used by the builder.
*/
public int getParallelNumber(){
return getBuilder().getParallelizationNum();
@@ -2254,14 +2316,17 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
// return prefs;
// }
+ @Override
public IResourceInfo[] getResourceInfos() {
return rcInfos.getResourceInfos();
}
+ @Override
public IResourceInfo getResourceInfo(IPath path, boolean exactPath) {
return rcInfos.getResourceInfo(path, exactPath);
}
+ @Override
public IResourceInfo getResourceInfoById(String id) {
IResourceInfo infos[] = rcInfos.getResourceInfos();
for(int i = 0; i < infos.length; i++){
@@ -2271,6 +2336,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return null;
}
+ @Override
public IFolderInfo getRootFolderInfo() {
return rootFolderInfo;
}
@@ -2280,22 +2346,26 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return new ResourceInfoContainer(cr, false);
}
+ @Override
public CConfigurationData getConfigurationData(){
return fCfgData;
}
+ @Override
public void removeResourceInfo(IPath path) {
IResourceInfo info = getResourceInfo(path, true);
if(info != null)
removeResourceConfiguration(info);
}
+ @Override
public IFolderInfo createFolderInfo(IPath path) {
String resourceName = path.lastSegment();
String id = ManagedBuildManager.calculateChildId(getId(), path.toString());
return createFolderInfo(path, id, resourceName);
}
+ @Override
public IFolderInfo createFolderInfo(IPath path, String id, String name) {
IResourceInfo info = getResourceInfo(path, false);
IFolderInfo folderInfo = null;
@@ -2308,6 +2378,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return folderInfo;
}
+ @Override
public IFolderInfo createFolderInfo(IPath path, IFolderInfo base, String id, String name) {
if(base.getPath().equals(path))
return null;
@@ -2320,6 +2391,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return folderInfo;
}
+ @Override
public ICSourceEntry[] getSourceEntries() {
if(sourceEntries == null || sourceEntries.length == 0){
if(parent != null && sourceEntries == null)
@@ -2330,6 +2402,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return sourceEntries.clone();
}
+ @Override
public void setSourceEntries(ICSourceEntry[] entries) {
setSourceEntries(entries, true);
}
@@ -2363,6 +2436,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
}
}
+ @Override
public void setErrorParserList(String[] ids) {
if(ids == null){
//reset
@@ -2402,10 +2476,12 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
}
}
+ @Override
public CBuildData getBuildData() {
return getEditableBuilder().getBuildData();
}
+ @Override
public IBuilder getEditableBuilder(){
IToolChain tc = getToolChain();
IBuilder builder = tc.getBuilder();
@@ -2417,10 +2493,12 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return builder;
}
+ @Override
public IBuilder getBuilder(){
return getToolChain().getBuilder();
}
+ @Override
public String getOutputPrefix(String outputExtension) {
// Treat null extensions as empty string
String ext = outputExtension == null ? new String() : outputExtension;
@@ -2445,6 +2523,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
fCfgDes = cfgDes;
}
+ @Override
public IBuildObjectProperties getBuildProperties() {
if(buildProperties == null){
BuildObjectProperties parentProps = findBuildProperties();
@@ -2475,6 +2554,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return supportsValue(type.getId(), value.getId());
}
+ @Override
public void propertiesChanged() {
if(isExtensionConfig)
return;
@@ -2498,6 +2578,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return booleanExpressionCalculator;
}
+ @Override
public boolean isSystemObject() {
if(isTest)
return true;
@@ -2508,10 +2589,12 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return false;
}
+ @Override
public String getOutputExtension(String resourceExtension) {
return getRootFolderInfo().getOutputExtension(resourceExtension);
}
+ @Override
public String getOutputFlag(String outputExt) {
// Treat null extension as an empty string
String ext = outputExt == null ? new String() : outputExt;
@@ -2529,6 +2612,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return flags;
}
+ @Override
public IManagedCommandLineInfo generateToolCommandLineInfo( String sourceExtension, String[] flags,
String outputFlag, String outputPrefix, String outputName, String[] inputResources, IPath inputLocation, IPath outputLocation ){
ITool[] tools = getFilteredTools();
@@ -2581,6 +2665,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return null;
}
+ @Override
public String[] getUserObjects(String extension) {
Vector objs = new Vector();
ITool tool = calculateTargetTool();
@@ -2622,6 +2707,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return objs.toArray(new String[objs.size()]);
}
+ @Override
public String[] getLibs(String extension) {
Vector libs = new Vector();
ITool tool = calculateTargetTool();
@@ -2676,6 +2762,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return libs.toArray(new String[libs.size()]);
}
+ @Override
public boolean buildsFileType(String srcExt) {
return getRootFolderInfo().buildsFileType(srcExt);
}
@@ -2743,6 +2830,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
}
}
+ @Override
public boolean supportsBuild(boolean managed) {
return supportsBuild(managed, true);
}
@@ -2763,6 +2851,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return true;
}
+ @Override
public boolean supportsType(String typeId) {
SupportedProperties props = findSupportedProperties();
boolean supports = false;
@@ -2776,6 +2865,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return supports;
}
+ @Override
public boolean supportsValue(String typeId, String valueId) {
SupportedProperties props = findSupportedProperties();
boolean supports = false;
@@ -2802,6 +2892,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
supportedProperties = new SupportedProperties(el);
}
+ @Override
public String[] getRequiredTypeIds() {
SupportedProperties props = findSupportedProperties();
List list = new ArrayList();
@@ -2814,6 +2905,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return list.toArray(new String[list.size()]);
}
+ @Override
public String[] getSupportedTypeIds() {
SupportedProperties props = findSupportedProperties();
List list = new ArrayList();
@@ -2826,6 +2918,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return list.toArray(new String[list.size()]);
}
+ @Override
public String[] getSupportedValueIds(String typeId) {
SupportedProperties props = findSupportedProperties();
List list = new ArrayList();
@@ -2838,6 +2931,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return list.toArray(new String[list.size()]);
}
+ @Override
public boolean requiresType(String typeId) {
SupportedProperties props = findSupportedProperties();
boolean requires = false;
@@ -2851,10 +2945,12 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return requires;
}
+ @Override
public boolean isManagedBuildOn() {
return getBuilder().isManagedBuildOn();
}
+ @Override
public void setManagedBuildOn(boolean on) throws BuildException {
try {
getEditableBuilder().setManagedBuildOn(on);
@@ -2863,6 +2959,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
}
}
+ @Override
public void changeBuilder(IBuilder newBuilder, String id, String name){
changeBuilder(newBuilder, id, name, false);
}
@@ -2892,6 +2989,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
}
}
+ @Override
public boolean isBuilderCompatible(IBuilder builder){
return builder.supportsBuild(isManagedBuildOn());
}
@@ -2972,6 +3070,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return isPreferenceConfig;
}
+ @Override
public IBuildPropertyValue getBuildArtefactType() {
IBuildObjectProperties props = findBuildProperties();
if(props != null){
@@ -2982,6 +3081,7 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
return null;
}
+ @Override
public void setBuildArtefactType(String id) throws BuildException {
IBuildObjectProperties props = getBuildProperties();
try {
@@ -3034,34 +3134,42 @@ public class Configuration extends BuildObject implements IConfiguration, IBuild
}
}
+ @Override
public IRealBuildObjectAssociation getExtensionObject() {
return isExtensionConfig ? this : (Configuration)getParent();
}
+ @Override
public IRealBuildObjectAssociation[] getIdenticBuildObjects() {
return new Configuration[]{(Configuration)getExtensionObject()};
}
+ @Override
public IRealBuildObjectAssociation getRealBuildObject() {
return getExtensionObject();
}
+ @Override
public IRealBuildObjectAssociation getSuperClassObject() {
return (IRealBuildObjectAssociation)getParent();
}
+ @Override
public int getType() {
return OBJECT_CONFIGURATION;
}
+ @Override
public boolean isRealBuildObject() {
return getRealBuildObject() == this;
}
+ @Override
public String getUniqueRealName() {
return getName();
}
+ @Override
public boolean isExtensionBuildObject() {
return isExtensionElement();
}
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java
index 4acd71aeba6..5446824dae3 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2002, 2010 IBM Corporation and others.
+ * Copyright (c) 2002, 2011 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
@@ -151,6 +151,7 @@ public class GeneratedMakefileBuilder extends ACBuilder {
return fullBuildNeeded;
}
+ @Override
public boolean visit(IResourceDelta delta) throws CoreException {
IResource resource = delta.getResource();
// If the project has changed, then a build is needed and we can stop
@@ -231,6 +232,7 @@ public class GeneratedMakefileBuilder extends ACBuilder {
}
}
+ @Override
public boolean visit(IResourceDelta delta) throws CoreException {
IResource rc = delta.getResource();
@@ -906,244 +908,242 @@ public class GeneratedMakefileBuilder extends ACBuilder {
}
IPath makeCommand = new Path(makeCmd);
- if (makeCommand != null) {
- String[] msgs = new String[2];
- msgs[0] = makeCommand.toString();
- msgs[1] = currentProject.getName();
- monitor.subTask(ManagedMakeMessages.getFormattedString(MAKE, msgs));
+ String[] msgs = new String[2];
+ msgs[0] = makeCommand.toString();
+ msgs[1] = currentProject.getName();
+ monitor.subTask(ManagedMakeMessages.getFormattedString(MAKE, msgs));
- // Get a build console for the project
- StringBuffer buf = new StringBuffer();
- IConsole console = CCorePlugin.getDefault().getConsole();
- console.start(currentProject);
- ConsoleOutputStream consoleOutStream = console.getOutputStream();
- String[] consoleHeader = new String[3];
+ // Get a build console for the project
+ StringBuffer buf = new StringBuffer();
+ IConsole console = CCorePlugin.getDefault().getConsole();
+ console.start(currentProject);
+ ConsoleOutputStream consoleOutStream = console.getOutputStream();
+ String[] consoleHeader = new String[3];
+ switch (buildType) {
+ case FULL_BUILD:
+ case INCREMENTAL_BUILD:
+ consoleHeader[0] = ManagedMakeMessages.getResourceString(TYPE_INC);
+ break;
+ case CLEAN_BUILD:
+ consoleHeader[0] = ManagedMakeMessages.getResourceString(TYPE_CLEAN);
+ break;
+ }
+
+ consoleHeader[1] = info.getConfigurationName();
+ consoleHeader[2] = currentProject.getName();
+ buf.append(NEWLINE);
+ buf.append(ManagedMakeMessages.getFormattedString(CONSOLE_HEADER, consoleHeader)).append(NEWLINE);
+ buf.append(NEWLINE);
+
+ IConfiguration cfg = info.getDefaultConfiguration();
+ if(!cfg.isSupported()){
+ String msg = ManagedMakeMessages.getFormattedString(WARNING_UNSUPPORTED_CONFIGURATION,new String[] {cfg.getName(),cfg.getToolChain().getName()});
+ buf.append(msg).append(NEWLINE);
+ buf.append(NEWLINE);
+ }
+ consoleOutStream.write(buf.toString().getBytes());
+ consoleOutStream.flush();
+
+ // Remove all markers for this project
+ removeAllMarkers(currentProject);
+
+ // Get a launcher for the make command
+ String errMsg = null;
+ IBuilder builder = info.getDefaultConfiguration().getBuilder();
+ ICommandLauncher launcher = builder.getCommandLauncher();
+ launcher.setProject(currentProject);
+ launcher.showCommand(true);
+
+ // Set the environmennt
+ IBuildEnvironmentVariable variables[] = ManagedBuildManager.getEnvironmentVariableProvider().getVariables(cfg,true,true);
+ String[] env = null;
+ ArrayList envList = new ArrayList();
+ if (variables != null) {
+ for(int i = 0; i < variables.length; i++){
+ envList.add(variables[i].getName() + "=" + variables[i].getValue()); //$NON-NLS-1$
+ }
+ env = envList.toArray(new String[envList.size()]);
+ }
+
+ // Hook up an error parser manager
+ String[] errorParsers = info.getDefaultConfiguration().getErrorParserList();
+ ErrorParserManager epm = new ErrorParserManager(getProject(), workingDirectoryURI, this, errorParsers);
+ epm.setOutputStream(consoleOutStream);
+ // This variable is necessary to ensure that the EPM stream stay open
+ // until we explicitly close it. See bug#123302.
+ OutputStream epmOutputStream = epm.getOutputStream();
+
+ // Get the arguments to be passed to make from build model
+ ArrayList makeArgs = new ArrayList();
+ String arg = info.getBuildArguments();
+ if (arg.length() > 0) {
+ String[] args = arg.split("\\s"); //$NON-NLS-1$
+ for (int i = 0; i < args.length; ++i) {
+ makeArgs.add(args[i]);
+ }
+ }
+
+ String[] makeTargets;
+ String prebuildStep = info.getPrebuildStep();
+ //try to resolve the build macros in the prebuildStep
+ try{
+ prebuildStep = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
+ prebuildStep,
+ "", //$NON-NLS-1$
+ " ", //$NON-NLS-1$
+ IBuildMacroProvider.CONTEXT_CONFIGURATION,
+ cfg);
+ } catch (BuildMacroException e){
+ }
+ boolean prebuildStepPresent = (prebuildStep.length() > 0);
+ Process proc = null;
+ boolean isuptodate = false;
+
+ if (prebuildStepPresent) {
+ @SuppressWarnings("unchecked")
+ ArrayList premakeArgs = (ArrayList) makeArgs.clone();
+ String[] premakeTargets;
switch (buildType) {
- case FULL_BUILD:
- case INCREMENTAL_BUILD:
- consoleHeader[0] = ManagedMakeMessages.getResourceString(TYPE_INC);
- break;
- case CLEAN_BUILD:
- consoleHeader[0] = ManagedMakeMessages.getResourceString(TYPE_CLEAN);
- break;
- }
-
- consoleHeader[1] = info.getConfigurationName();
- consoleHeader[2] = currentProject.getName();
- buf.append(NEWLINE);
- buf.append(ManagedMakeMessages.getFormattedString(CONSOLE_HEADER, consoleHeader)).append(NEWLINE);
- buf.append(NEWLINE);
-
- IConfiguration cfg = info.getDefaultConfiguration();
- if(!cfg.isSupported()){
- String msg = ManagedMakeMessages.getFormattedString(WARNING_UNSUPPORTED_CONFIGURATION,new String[] {cfg.getName(),cfg.getToolChain().getName()});
- buf.append(msg).append(NEWLINE);
- buf.append(NEWLINE);
- }
- consoleOutStream.write(buf.toString().getBytes());
- consoleOutStream.flush();
-
- // Remove all markers for this project
- removeAllMarkers(currentProject);
-
- // Get a launcher for the make command
- String errMsg = null;
- IBuilder builder = info.getDefaultConfiguration().getBuilder();
- ICommandLauncher launcher = builder.getCommandLauncher();
- launcher.setProject(currentProject);
- launcher.showCommand(true);
-
- // Set the environmennt
- IBuildEnvironmentVariable variables[] = ManagedBuildManager.getEnvironmentVariableProvider().getVariables(cfg,true,true);
- String[] env = null;
- ArrayList envList = new ArrayList();
- if (variables != null) {
- for(int i = 0; i < variables.length; i++){
- envList.add(variables[i].getName() + "=" + variables[i].getValue()); //$NON-NLS-1$
- }
- env = envList.toArray(new String[envList.size()]);
- }
-
- // Hook up an error parser manager
- String[] errorParsers = info.getDefaultConfiguration().getErrorParserList();
- ErrorParserManager epm = new ErrorParserManager(getProject(), workingDirectoryURI, this, errorParsers);
- epm.setOutputStream(consoleOutStream);
- // This variable is necessary to ensure that the EPM stream stay open
- // until we explicitly close it. See bug#123302.
- OutputStream epmOutputStream = epm.getOutputStream();
-
- // Get the arguments to be passed to make from build model
- ArrayList makeArgs = new ArrayList();
- String arg = info.getBuildArguments();
- if (arg.length() > 0) {
- String[] args = arg.split("\\s"); //$NON-NLS-1$
- for (int i = 0; i < args.length; ++i) {
- makeArgs.add(args[i]);
- }
- }
-
- String[] makeTargets;
- String prebuildStep = info.getPrebuildStep();
- //try to resolve the build macros in the prebuildStep
- try{
- prebuildStep = ManagedBuildManager.getBuildMacroProvider().resolveValueToMakefileFormat(
- prebuildStep,
- "", //$NON-NLS-1$
- " ", //$NON-NLS-1$
- IBuildMacroProvider.CONTEXT_CONFIGURATION,
- cfg);
- } catch (BuildMacroException e){
- }
- boolean prebuildStepPresent = (prebuildStep.length() > 0);
- Process proc = null;
- boolean isuptodate = false;
-
- if (prebuildStepPresent) {
- @SuppressWarnings("unchecked")
- ArrayList premakeArgs = (ArrayList) makeArgs.clone();
- String[] premakeTargets;
- switch (buildType) {
- case INCREMENTAL_BUILD: {
- // For an incremental build with a prebuild step:
- // Check the status of the main build with "make -q main-build"
- // If up to date:
- // then: don't invoke the prebuild step, which should be run only if
- // something needs to be built in the main build
- // else: invoke the prebuild step and the main build step
- premakeArgs.add("-q"); //$NON-NLS-1$
- premakeArgs.add("main-build"); //$NON-NLS-1$
- premakeTargets = premakeArgs.toArray(new String[premakeArgs.size()]);
- proc = launcher.execute(makeCommand, premakeTargets, env, workingDirectory, monitor);
- if (proc != null) {
- try {
- // Close the input of the process since we will never write to it
- proc.getOutputStream().close();
- } catch (IOException e) {
- }
- if (launcher.waitAndRead(epm.getOutputStream(), epm.getOutputStream(),
- new SubProgressMonitor(monitor,
- IProgressMonitor.UNKNOWN)) != ICommandLauncher.OK) {
- errMsg = launcher.getErrorMessage();
- }
- } else {
- errMsg = launcher.getErrorMessage();
- }
-
- if ((errMsg != null && errMsg.length() > 0) || proc == null) {
- // Can't tell if the build is needed, so assume it is, and let any errors be triggered
- // when the "real" build is invoked below
- makeArgs.add("pre-build"); //$NON-NLS-1$
- makeArgs.add("main-build"); //$NON-NLS-1$
- } else {
- // The "make -q" command launch was successful
- if (proc.exitValue() == 0) {
- // If the status value returned from "make -q" is 0, then the build state is up-to-date
- isuptodate = true;
- // Report that the build was up to date, and thus nothing needs to be built
- String uptodateMsg = ManagedMakeMessages.getFormattedString(NOTHING_BUILT, currentProject.getName());
- buf = new StringBuffer();
- buf.append(NEWLINE);
- buf.append(uptodateMsg).append(NEWLINE);
- // Write message on the console
- consoleOutStream.write(buf.toString().getBytes());
- consoleOutStream.flush();
- epmOutputStream.close();
- consoleOutStream.close();
- } else {
- // The status value was other than 0, so press on with the build process
- makeArgs.add("pre-build"); //$NON-NLS-1$
- makeArgs.add("main-build"); //$NON-NLS-1$
- }
- }
- break;
- }
- case FULL_BUILD: {
-// makeArgs.add("clean"); //$NON-NLS-1$
- makeArgs.add("pre-build"); //$NON-NLS-1$
- makeArgs.add("main-build"); //$NON-NLS-1$
- break;
- }
- case CLEAN_BUILD: {
- makeArgs.add("clean"); //$NON-NLS-1$
- break;
- }
- }
-
- } else {
- // No prebuild step
- //
- makeArgs.addAll(Arrays.asList(getMakeTargets(buildType)));
- }
-
- makeTargets = makeArgs.toArray(new String[makeArgs.size()]);
-
- // Launch make - main invocation
- if (!isuptodate) {
- proc = launcher.execute(makeCommand, makeTargets, env, workingDirectory, monitor);
+ case INCREMENTAL_BUILD: {
+ // For an incremental build with a prebuild step:
+ // Check the status of the main build with "make -q main-build"
+ // If up to date:
+ // then: don't invoke the prebuild step, which should be run only if
+ // something needs to be built in the main build
+ // else: invoke the prebuild step and the main build step
+ premakeArgs.add("-q"); //$NON-NLS-1$
+ premakeArgs.add("main-build"); //$NON-NLS-1$
+ premakeTargets = premakeArgs.toArray(new String[premakeArgs.size()]);
+ proc = launcher.execute(makeCommand, premakeTargets, env, workingDirectory, monitor);
if (proc != null) {
try {
// Close the input of the process since we will never write to it
proc.getOutputStream().close();
} catch (IOException e) {
}
-
- int state = launcher.waitAndRead(epm.getOutputStream(), epm.getOutputStream(),
+ if (launcher.waitAndRead(epm.getOutputStream(), epm.getOutputStream(),
new SubProgressMonitor(monitor,
- IProgressMonitor.UNKNOWN));
- if(state != ICommandLauncher.OK){
+ IProgressMonitor.UNKNOWN)) != ICommandLauncher.OK) {
errMsg = launcher.getErrorMessage();
-
- if(state == ICommandLauncher.COMMAND_CANCELED){
- //TODO: the better way of handling cancel is needed
- //currently the rebuild state is set to true forcing the full rebuild
- //on the next builder invocation
- info.getDefaultConfiguration().setRebuildState(true);
- }
- }
-
- // Force a resync of the projects without allowing the user to cancel.
- // This is probably unkind, but short of this there is no way to insure
- // the UI is up-to-date with the build results
- monitor.subTask(ManagedMakeMessages
- .getResourceString(REFRESH));
- try {
- //currentProject.refreshLocal(IResource.DEPTH_INFINITE, null);
-
- // use the refresh scope manager to refresh
- RefreshScopeManager refreshManager = RefreshScopeManager.getInstance();
- IWorkspaceRunnable runnable = refreshManager.getRefreshRunnable(currentProject);
- ResourcesPlugin.getWorkspace().run(runnable, null, IWorkspace.AVOID_UPDATE, null);
- } catch (CoreException e) {
- monitor.subTask(ManagedMakeMessages
- .getResourceString(REFRESH_ERROR));
}
} else {
errMsg = launcher.getErrorMessage();
}
- // Report either the success or failure of our mission
- buf = new StringBuffer();
- if (errMsg != null && errMsg.length() > 0) {
- String errorDesc = ManagedMakeMessages.getResourceString(BUILD_ERROR);
- buf.append(errorDesc).append(NEWLINE);
- buf.append("(").append(errMsg).append(")"); //$NON-NLS-1$ //$NON-NLS-2$
+ if ((errMsg != null && errMsg.length() > 0) || proc == null) {
+ // Can't tell if the build is needed, so assume it is, and let any errors be triggered
+ // when the "real" build is invoked below
+ makeArgs.add("pre-build"); //$NON-NLS-1$
+ makeArgs.add("main-build"); //$NON-NLS-1$
} else {
- // Report a successful build
- String successMsg = ManagedMakeMessages.getFormattedString(BUILD_FINISHED,
- currentProject.getName());
- buf.append(successMsg).append(NEWLINE);
+ // The "make -q" command launch was successful
+ if (proc.exitValue() == 0) {
+ // If the status value returned from "make -q" is 0, then the build state is up-to-date
+ isuptodate = true;
+ // Report that the build was up to date, and thus nothing needs to be built
+ String uptodateMsg = ManagedMakeMessages.getFormattedString(NOTHING_BUILT, currentProject.getName());
+ buf = new StringBuffer();
+ buf.append(NEWLINE);
+ buf.append(uptodateMsg).append(NEWLINE);
+ // Write message on the console
+ consoleOutStream.write(buf.toString().getBytes());
+ consoleOutStream.flush();
+ epmOutputStream.close();
+ consoleOutStream.close();
+ } else {
+ // The status value was other than 0, so press on with the build process
+ makeArgs.add("pre-build"); //$NON-NLS-1$
+ makeArgs.add("main-build"); //$NON-NLS-1$
+ }
+ }
+ break;
+ }
+ case FULL_BUILD: {
+// makeArgs.add("clean"); //$NON-NLS-1$
+ makeArgs.add("pre-build"); //$NON-NLS-1$
+ makeArgs.add("main-build"); //$NON-NLS-1$
+ break;
+ }
+ case CLEAN_BUILD: {
+ makeArgs.add("clean"); //$NON-NLS-1$
+ break;
+ }
+ }
+
+ } else {
+ // No prebuild step
+ //
+ makeArgs.addAll(Arrays.asList(getMakeTargets(buildType)));
+ }
+
+ makeTargets = makeArgs.toArray(new String[makeArgs.size()]);
+
+ // Launch make - main invocation
+ if (!isuptodate) {
+ proc = launcher.execute(makeCommand, makeTargets, env, workingDirectory, monitor);
+ if (proc != null) {
+ try {
+ // Close the input of the process since we will never write to it
+ proc.getOutputStream().close();
+ } catch (IOException e) {
}
- // Write message on the console
- consoleOutStream.write(buf.toString().getBytes());
- consoleOutStream.flush();
- epmOutputStream.close();
+ int state = launcher.waitAndRead(epm.getOutputStream(), epm.getOutputStream(),
+ new SubProgressMonitor(monitor,
+ IProgressMonitor.UNKNOWN));
+ if(state != ICommandLauncher.OK){
+ errMsg = launcher.getErrorMessage();
+
+ if(state == ICommandLauncher.COMMAND_CANCELED){
+ //TODO: the better way of handling cancel is needed
+ //currently the rebuild state is set to true forcing the full rebuild
+ //on the next builder invocation
+ info.getDefaultConfiguration().setRebuildState(true);
+ }
+ }
- // Generate any error markers that the build has discovered
- monitor.subTask(ManagedMakeMessages.getResourceString(MARKERS));
- addBuilderMarkers(epm);
- consoleOutStream.close();
+ // Force a resync of the projects without allowing the user to cancel.
+ // This is probably unkind, but short of this there is no way to insure
+ // the UI is up-to-date with the build results
+ monitor.subTask(ManagedMakeMessages
+ .getResourceString(REFRESH));
+ try {
+ //currentProject.refreshLocal(IResource.DEPTH_INFINITE, null);
+
+ // use the refresh scope manager to refresh
+ RefreshScopeManager refreshManager = RefreshScopeManager.getInstance();
+ IWorkspaceRunnable runnable = refreshManager.getRefreshRunnable(currentProject);
+ ResourcesPlugin.getWorkspace().run(runnable, null, IWorkspace.AVOID_UPDATE, null);
+ } catch (CoreException e) {
+ monitor.subTask(ManagedMakeMessages
+ .getResourceString(REFRESH_ERROR));
+ }
+ } else {
+ errMsg = launcher.getErrorMessage();
}
+
+ // Report either the success or failure of our mission
+ buf = new StringBuffer();
+ if (errMsg != null && errMsg.length() > 0) {
+ String errorDesc = ManagedMakeMessages.getResourceString(BUILD_ERROR);
+ buf.append(errorDesc).append(NEWLINE);
+ buf.append("(").append(errMsg).append(")"); //$NON-NLS-1$ //$NON-NLS-2$
+ } else {
+ // Report a successful build
+ String successMsg = ManagedMakeMessages.getFormattedString(BUILD_FINISHED,
+ currentProject.getName());
+ buf.append(successMsg).append(NEWLINE);
+ }
+
+ // Write message on the console
+ consoleOutStream.write(buf.toString().getBytes());
+ consoleOutStream.flush();
+ epmOutputStream.close();
+
+ // Generate any error markers that the build has discovered
+ monitor.subTask(ManagedMakeMessages.getResourceString(MARKERS));
+ addBuilderMarkers(epm);
+ consoleOutStream.close();
}
} catch (Exception e) {
forgetLastBuiltState();
@@ -1196,7 +1196,7 @@ public class GeneratedMakefileBuilder extends ACBuilder {
boolean resumeOnErr,
IProgressMonitor monitor) {
- boolean isParallel = ((Configuration)cfg).getInternalBuilderParallel();
+ boolean isParallel = ((Configuration)cfg).getParallelDef();
// Get the project and make sure there's a monitor to cancel the build
IProject currentProject = cfg.getOwner().getProject();
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/MultiConfiguration.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/MultiConfiguration.java
index a2bfbc22137..c3e3fc4c404 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/MultiConfiguration.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/MultiConfiguration.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Intel Corporation and others.
+ * Copyright (c) 2007, 2011 Intel 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
@@ -44,6 +44,7 @@ import org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariableSu
import org.eclipse.cdt.managedbuilder.macros.IConfigurationBuildMacroSupplier;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.osgi.framework.Version;
@@ -91,6 +92,7 @@ public class MultiConfiguration extends MultiItemsHolder implements
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#buildsFileType(java.lang.String)
*/
+ @Override
public boolean buildsFileType(String srcExt) {
return curr().buildsFileType(srcExt);
}
@@ -98,6 +100,7 @@ public class MultiConfiguration extends MultiItemsHolder implements
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#calculateTargetTool()
*/
+ @Override
public ITool calculateTargetTool() {
return curr().calculateTargetTool();
}
@@ -105,6 +108,7 @@ public class MultiConfiguration extends MultiItemsHolder implements
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.IConfiguration#changeBuilder(org.eclipse.cdt.managedbuilder.core.IBuilder, java.lang.String, java.lang.String)
*/
+ @Override
public void changeBuilder(IBuilder newBuilder, String id, String name) {
for (int i=0; i ri = new ArrayList();
for (int i=0; ib || b-a) b--; // error here
// }
- public void testSimple() throws IOException, CoreException {
+ public void testSimple() throws Exception {
loadcode(getAboveComment());
String result = runQuickFixOneFile();
assertContainedIn("(b+a && a>b)", result); //$NON-NLS-1$
@@ -52,23 +49,18 @@ public class SuggestedParenthesisQuickFixTest extends QuickFixTestCase {
* this test is using two files, there was not actually bugs here so
* quick fix is not called
*/
- public void test2FilesExample() throws FileNotFoundException, IOException {
+ public void test2FilesExample() throws Exception {
CharSequence[] code = getContents(2);
File f1 = loadcode(code[0].toString());
File f2 = loadcode(code[1].toString());
// lets pretend marker is found in main.c but fixes go in both files,
// to check do something like this
- try {
- EditorUtility.openInEditor(f2);
- runCodan();
- doRunQuickFix();
- String result_main = TestUtils.loadFile(new FileInputStream(f2));
- String result_header = TestUtils.loadFile(new FileInputStream(f1));
- assertContainedIn("foo", result_main); //$NON-NLS-1$
- assertContainedIn("foo", result_header); //$NON-NLS-1$
- } catch (Exception e) {
- e.printStackTrace();
- fail(e.getMessage());
- }
+ EditorUtility.openInEditor(f2);
+ runCodan();
+ doRunQuickFix();
+ String result_main = TestUtils.loadFile(new FileInputStream(f2));
+ String result_header = TestUtils.loadFile(new FileInputStream(f1));
+ assertContainedIn("foo", result_main); //$NON-NLS-1$
+ assertContainedIn("foo", result_header); //$NON-NLS-1$
}
}
diff --git a/core/org.eclipse.cdt.core.macosx/os/macosx/x86/libpty.jnilib b/core/org.eclipse.cdt.core.macosx/os/macosx/x86/libpty.jnilib
old mode 100755
new mode 100644
diff --git a/core/org.eclipse.cdt.core.macosx/os/macosx/x86/libspawner.jnilib b/core/org.eclipse.cdt.core.macosx/os/macosx/x86/libspawner.jnilib
old mode 100755
new mode 100644
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java
index ea5a472b683..aef89346a57 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java
@@ -266,8 +266,7 @@ public class AST2CPPTests extends AST2BaseTest {
assertNoProblemBindings(col);
}
- protected IASTTranslationUnit parseAndCheckBindings(String code) throws Exception
- {
+ protected IASTTranslationUnit parseAndCheckBindings(String code) throws Exception {
IASTTranslationUnit tu = parse(code, ParserLanguage.CPP);
CPPNameCollector col = new CPPNameCollector();
tu.accept(col);
@@ -285,8 +284,7 @@ public class AST2CPPTests extends AST2BaseTest {
return new BindingAssertionHelper(code, true);
}
- public void testBug40422() throws Exception
- {
+ public void testBug40422() throws Exception {
IASTTranslationUnit tu = parse("class A { int y; }; int A::* x = 0;", ParserLanguage.CPP); //$NON-NLS-1$
CPPNameCollector col = new CPPNameCollector();
tu.accept(col);
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java
index ca6240ec93e..4b1d5d9e4d3 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java
@@ -5574,4 +5574,13 @@ public class AST2TemplateTests extends AST2BaseTest {
public void testDependentUsingDeclaration() throws Exception {
parseAndCheckBindings();
}
+
+ // template void* foo(int);
+ // template void f(T t) {
+ // if (T* i = foo<0>(0))
+ // return;
+ // }
+ public void testDirectlyNestedAmbiguity_362976() throws Exception {
+ parseAndCheckBindings();
+ }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/ClassTypeHelperTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/ClassTypeHelperTests.java
new file mode 100644
index 00000000000..f3454e8e5cd
--- /dev/null
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/ClassTypeHelperTests.java
@@ -0,0 +1,122 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Google, Inc 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:
+ * Sergey Prigogin (Google) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.tests.ast2;
+
+import java.io.IOException;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ClassTypeHelper;
+import org.eclipse.cdt.internal.core.parser.ParserException;
+
+/**
+ * Tests for ClassTypeHelper class.
+ */
+public class ClassTypeHelperTests extends AST2BaseTest {
+
+ public ClassTypeHelperTests() {
+ }
+
+ public ClassTypeHelperTests(String name) {
+ super(name);
+ }
+
+ public static TestSuite suite() {
+ return suite(ClassTypeHelperTests.class);
+ }
+
+ protected BindingAssertionHelper getAssertionHelper() throws ParserException, IOException {
+ String code= getAboveComment();
+ return new BindingAssertionHelper(code, true);
+ }
+
+ // struct A {
+ // A(const A& a);
+ // };
+ //
+ // class B {
+ // public:
+ // B();
+ // int x;
+ // A* y;
+ // const A& z;
+ // static A s;
+ // };
+ //
+ // class C {
+ // public:
+ // A a;
+ // };
+ public void testHasTrivialCopyCtor() throws Exception {
+ BindingAssertionHelper helper = getAssertionHelper();
+ ICPPClassType classA = helper.assertNonProblem("A {", 1, ICPPClassType.class);
+ assertFalse(ClassTypeHelper.hasTrivialCopyCtor(classA));
+ ICPPClassType classB = helper.assertNonProblem("B {", 1, ICPPClassType.class);
+ assertTrue(ClassTypeHelper.hasTrivialCopyCtor(classB));
+ ICPPClassType classC = helper.assertNonProblem("C {", 1, ICPPClassType.class);
+ assertFalse(ClassTypeHelper.hasTrivialCopyCtor(classC));
+ }
+
+ // struct A {
+ // ~A();
+ // };
+ //
+ // class B {
+ // public:
+ // B();
+ // B(const B& a);
+ // int x;
+ // B* y;
+ // const B& z;
+ // static A s;
+ // };
+ //
+ // class C {
+ // public:
+ // A a;
+ // };
+ public void testHasTrivialDestructor() throws Exception {
+ BindingAssertionHelper helper = getAssertionHelper();
+ ICPPClassType classA = helper.assertNonProblem("A {", 1, ICPPClassType.class);
+ assertFalse(ClassTypeHelper.hasTrivialDestructor(classA));
+ ICPPClassType classB = helper.assertNonProblem("B {", 1, ICPPClassType.class);
+ assertTrue(ClassTypeHelper.hasTrivialDestructor(classB));
+ ICPPClassType classC = helper.assertNonProblem("C {", 1, ICPPClassType.class);
+ assertFalse(ClassTypeHelper.hasTrivialDestructor(classC));
+ }
+
+ // struct A {
+ // virtual void m();
+ // };
+ //
+ // class B {
+ // public:
+ // B();
+ // B(const B& a);
+ // void m();
+ // int x;
+ // B* y;
+ // const B& z;
+ // };
+ //
+ // class C : public A {
+ // };
+ public void testIsPolymorphic() throws Exception {
+ BindingAssertionHelper helper = getAssertionHelper();
+ ICPPClassType classA = helper.assertNonProblem("A {", 1, ICPPClassType.class);
+ assertTrue(ClassTypeHelper.isPolymorphic(classA));
+ ICPPClassType classB = helper.assertNonProblem("B {", 1, ICPPClassType.class);
+ assertFalse(ClassTypeHelper.isPolymorphic(classB));
+ ICPPClassType classC = helper.assertNonProblem("C", 1, ICPPClassType.class);
+ assertTrue(ClassTypeHelper.isPolymorphic(classC));
+ }
+}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMParserTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMParserTestSuite.java
index f29296daa4d..1aa2dc3e859 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMParserTestSuite.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMParserTestSuite.java
@@ -30,6 +30,7 @@ public class DOMParserTestSuite extends TestCase {
suite.addTest(ASTCPPSpecDefectTests.suite());
suite.addTest(AST2CPPImplicitNameTests.suite());
suite.addTest(AST2TemplateTests.suite());
+ suite.addTest(ClassTypeHelperTests.suite());
suite.addTestSuite(QuickParser2Tests.class);
suite.addTest(CompleteParser2Tests.suite());
suite.addTest(DOMLocationTests.suite());
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteBaseTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteBaseTest.java
index 8952f7df321..aa2db5ed3e9 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteBaseTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteBaseTest.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite;
@@ -27,7 +27,6 @@ import org.eclipse.jface.text.TextSelection;
/**
* @author Guido Zgraggen IFS
- *
*/
public abstract class RewriteBaseTest extends BaseTestFramework implements ILogListener{
protected static final NullProgressMonitor NULL_PROGRESS_MONITOR = new NullProgressMonitor();
@@ -49,37 +48,37 @@ public abstract class RewriteBaseTest extends BaseTestFramework implements ILogL
@Override
protected abstract void runTest() throws Throwable;
-
@Override
protected void setUp() throws Exception {
super.setUp();
for (TestSourceFile testFile : fileMap.values()) {
- if(testFile.getSource().length() > 0) {
+ if (testFile.getSource().length() > 0) {
importFile(testFile.getName(), testFile.getSource());
}
}
}
protected void assertEquals(TestSourceFile file, IFile file2) throws Exception {
- StringBuffer code = getCodeFromIFile(file2);
+ StringBuilder code = getCodeFromFile(file2);
assertEquals(file.getExpectedSource(), TestHelper.unifyNewLines(code.toString()));
}
- protected void compareFiles(Map testResourceFiles) throws Exception {
+ protected void compareFiles(Map testResourceFiles) throws Exception {
for (String fileName : testResourceFiles.keySet()) {
TestSourceFile file = testResourceFiles.get(fileName);
IFile iFile = project.getFile(new Path(fileName));
- StringBuffer code = getCodeFromIFile(iFile);
- assertEquals(TestHelper.unifyNewLines(file.getExpectedSource()), TestHelper.unifyNewLines(code.toString()));
+ StringBuilder code = getCodeFromFile(iFile);
+ assertEquals(TestHelper.unifyNewLines(file.getExpectedSource()),
+ TestHelper.unifyNewLines(code.toString()));
}
}
- protected StringBuffer getCodeFromIFile(IFile file) throws Exception {
+ protected StringBuilder getCodeFromFile(IFile file) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(file.getContents()));
- StringBuffer code = new StringBuffer();
+ StringBuilder code = new StringBuilder();
String line;
- while((line = br.readLine()) != null) {
+ while ((line = br.readLine()) != null) {
code.append(line);
code.append('\n');
}
@@ -96,10 +95,10 @@ public abstract class RewriteBaseTest extends BaseTestFramework implements ILogL
public void logging(IStatus status, String plugin) {
Throwable ex = status.getException();
- StringBuffer stackTrace = new StringBuffer();
- if(ex != null) {
+ StringBuilder stackTrace = new StringBuilder();
+ if (ex != null) {
stackTrace.append('\n');
- for(StackTraceElement ste : ex.getStackTrace()) {
+ for (StackTraceElement ste : ex.getStackTrace()) {
stackTrace.append(ste.toString());
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTester.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTester.java
index ee1912a8ef5..a3a3d20a8a4 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTester.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTester.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite;
@@ -33,10 +33,8 @@ import org.osgi.framework.Bundle;
/**
* @author Emanuel Graf
- *
*/
-public class RewriteTester extends TestSuite{
-
+public class RewriteTester extends TestSuite {
enum MatcherState{skip, inTest, inSource, inExpectedResult}
private static final String classRegexp = "//#(.*)\\s*(\\w*)*$"; //$NON-NLS-1$
@@ -44,7 +42,7 @@ public class RewriteTester extends TestSuite{
private static final String fileRegexp = "//@(.*)\\s*(\\w*)*$"; //$NON-NLS-1$
private static final String resultRegexp = "//=.*$"; //$NON-NLS-1$
- public static Test suite(String name, String file)throws Exception {
+ public static Test suite(String name, String file) throws Exception {
BufferedReader in = createReader(file);
ArrayList testCases = createTests(in);
@@ -60,7 +58,6 @@ public class RewriteTester extends TestSuite{
}
private static ArrayList createTests(BufferedReader inputReader) throws Exception {
-
String line;
Vector files = new Vector();
TestSourceFile actFile = null;
@@ -70,10 +67,9 @@ public class RewriteTester extends TestSuite{
String className = null;
boolean bevorFirstTest = true;
- while ((line = inputReader.readLine()) != null){
-
- if(lineMatchesBeginOfTest(line)) {
- if(!bevorFirstTest) {
+ while ((line = inputReader.readLine()) != null) {
+ if (lineMatchesBeginOfTest(line)) {
+ if (!bevorFirstTest) {
RewriteBaseTest test = createTestClass(className, testName, files);
testCases.add(test);
files = new Vector();
@@ -84,27 +80,27 @@ public class RewriteTester extends TestSuite{
testName = getNameOfTest(line);
bevorFirstTest = false;
continue;
- } else if (lineMatchesBeginOfResult(line)) {
+ } else if (lineMatchesBeginOfResult(line)) {
matcherState = MatcherState.inExpectedResult;
continue;
- }else if (lineMatchesFileName(line)) {
+ } else if (lineMatchesFileName(line)) {
matcherState = MatcherState.inSource;
actFile = new TestSourceFile(getFileName(line));
files.add(actFile);
continue;
- }else if(lineMatchesClassName(line)) {
+ } else if (lineMatchesClassName(line)) {
className = getNameOfClass(line);
continue;
}
- switch(matcherState) {
+ switch (matcherState) {
case inSource:
- if(actFile != null) {
+ if (actFile != null) {
actFile.addLineToSource(line);
}
break;
case inExpectedResult:
- if(actFile != null) {
+ if (actFile != null) {
actFile.addLineToExpectedSource(line);
}
break;
@@ -117,11 +113,8 @@ public class RewriteTester extends TestSuite{
return testCases;
}
-
-
- private static RewriteBaseTest createTestClass(String className, String testName, Vector files) throws Exception {
-
-
+ private static RewriteBaseTest createTestClass(String className, String testName,
+ Vector files) throws Exception {
try {
Class> refClass = Class.forName(className);
Class> paratypes[] = new Class[2];
@@ -134,7 +127,7 @@ public class RewriteTester extends TestSuite{
RewriteBaseTest test = (RewriteBaseTest) ct.newInstance(arglist);
for (TestSourceFile file : files) {
TextSelection sel = file.getSelection();
- if(sel != null) {
+ if (sel != null) {
test.setFileWithSelection(file.getName());
test.setSelection(sel);
break;
@@ -142,7 +135,8 @@ public class RewriteTester extends TestSuite{
}
return test;
} catch (ClassNotFoundException e) {
- throw new Exception("Unknown TestClass: " + e.getMessage() + ". Make sure the test's sourcefile specifies a valid test class.");
+ throw new Exception("Unknown TestClass: " + e.getMessage() +
+ ". Make sure the test's sourcefile specifies a valid test class.");
} catch (SecurityException e) {
throw new Exception("Security Exception during Test creation", e);
} catch (NoSuchMethodException e) {
@@ -160,18 +154,16 @@ public class RewriteTester extends TestSuite{
private static String getFileName(String line) {
Matcher matcherBeginOfTest = createMatcherFromString(fileRegexp, line);
- if(matcherBeginOfTest.find())
+ if (matcherBeginOfTest.find())
return matcherBeginOfTest.group(1);
- else
- return null;
+ return null;
}
private static String getNameOfClass(String line) {
Matcher matcherBeginOfTest = createMatcherFromString(classRegexp, line);
- if(matcherBeginOfTest.find())
+ if (matcherBeginOfTest.find())
return matcherBeginOfTest.group(1);
- else
- return null;
+ return null;
}
private static boolean lineMatchesBeginOfTest(String line) {
@@ -192,10 +184,9 @@ public class RewriteTester extends TestSuite{
private static String getNameOfTest(String line) {
Matcher matcherBeginOfTest = createMatcherFromString(testRegexp, line);
- if(matcherBeginOfTest.find())
+ if (matcherBeginOfTest.find())
return matcherBeginOfTest.group(1);
- else
- return "Not Named";
+ return "Not Named";
}
private static boolean lineMatchesBeginOfResult(String line) {
@@ -205,7 +196,7 @@ public class RewriteTester extends TestSuite{
private static TestSuite createSuite(ArrayList testCases, String name) {
TestSuite suite = new TestSuite(name);
Iterator it = testCases.iterator();
- while(it.hasNext()) {
+ while (it.hasNext()) {
RewriteBaseTest subject =it.next();
suite.addTest(subject);
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTests.java
index c616d78c7bb..a6f3be6113d 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/RewriteTests.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite;
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/TestHelper.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/TestHelper.java
index 69625d06b15..18e02659db8 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/TestHelper.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/TestHelper.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite;
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/TestSourceFile.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/TestSourceFile.java
index e2d3f4de406..f4ed7aa83bd 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/TestSourceFile.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/TestSourceFile.java
@@ -18,10 +18,8 @@ import org.eclipse.jface.text.TextSelection;
/**
* @author Emanuel Graf
- *
*/
public class TestSourceFile {
-
private static final String REPLACEMENT = ""; //$NON-NLS-1$
private String name;
private StringBuffer source = new StringBuffer();
@@ -39,29 +37,32 @@ public class TestSourceFile {
super();
this.name = name;
}
+
public String getExpectedSource() {
String exp = expectedSource.toString();
- if(exp.length() == 0) {
+ if (exp.length() == 0) {
return getSource();
- }else {
+ } else {
return exp;
}
}
+
public String getName() {
return name;
}
+
public String getSource() {
return source.toString();
}
public void addLineToSource(String code) {
Matcher start = createMatcherFromString(selectionStartLineRegex, code);
- if(start.matches()) {
+ if (start.matches()) {
selectionStart = start.start(2) + source.length();
code = code.replaceAll(selectionStartRegex, REPLACEMENT);
}
Matcher end = createMatcherFromString(selectionEndLineRegex, code);
- if(end.matches()) {
+ if (end.matches()) {
selectionEnd = end.start(2) + source.length();
code = code.replaceAll(selectionEndRegex, REPLACEMENT);
}
@@ -75,11 +76,9 @@ public class TestSourceFile {
}
public TextSelection getSelection() {
- if(selectionStart < 0 || selectionEnd <0 ) {
+ if (selectionStart < 0 || selectionEnd <0 )
return null;
- }else {
- return new TextSelection(selectionStart, selectionEnd -selectionStart);
- }
+ return new TextSelection(selectionStart, selectionEnd -selectionStart);
}
protected static Matcher createMatcherFromString(String pattern, String line) {
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTest.java
index 293a2afb5c0..29f9781df2a 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTest.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.astwriter;
@@ -57,7 +57,7 @@ public class ASTWriterTest extends RewriteBaseTest {
protected void setUp() throws Exception {
super.setUp();
for (TestSourceFile testFile : fileMap.values()) {
- if(testFile.getSource().length() > 0) {
+ if (testFile.getSource().length() > 0) {
file = importFile(testFile.getName(), testFile.getSource());
}
}
@@ -70,11 +70,12 @@ public class ASTWriterTest extends RewriteBaseTest {
}
@Override
- protected void compareFiles(Map testResourceFiles) throws Exception {
+ protected void compareFiles(Map testResourceFiles) throws Exception {
for (String fileName : testResourceFiles.keySet()) {
TestSourceFile testFile = testResourceFiles.get(fileName);
String code = generateSource(testFile);
- assertEquals(TestHelper.unifyNewLines(testFile.getExpectedSource()), TestHelper.unifyNewLines(code + System.getProperty("line.separator"))); //$NON-NLS-1$
+ assertEquals(TestHelper.unifyNewLines(testFile.getExpectedSource()),
+ TestHelper.unifyNewLines(code + System.getProperty("line.separator"))); //$NON-NLS-1$
}
}
@@ -84,7 +85,7 @@ public class ASTWriterTest extends RewriteBaseTest {
ASTModificationMap map = new ASTModificationMap();
map.getModificationsForNode(unit.getDeclarations()[0]);
ASTWriter writer = new ASTWriter();
- return writer.write(unit, null, commentMap);
+ return writer.write(unit, commentMap);
}
protected ISourceCodeParser getParser(TestSourceFile testFile) throws Exception {
@@ -97,43 +98,37 @@ public class ASTWriterTest extends RewriteBaseTest {
IScanner scanner = AST2BaseTest.createScanner(codeReader, language, ParserMode.COMPLETE_PARSE, scannerInfo);
ISourceCodeParser parser2 = null;
- if( language == ParserLanguage.CPP ) {
+ if (language == ParserLanguage.CPP) {
ICPPParserExtensionConfiguration config = null;
- if (useGNUExtensions){
+ if (useGNUExtensions) {
config = new GPPParserExtensionConfiguration();
- } else{
+ } else {
config = new ANSICPPParserExtensionConfiguration();
}
- parser2 = new GNUCPPSourceParser(scanner, ParserMode.COMPLETE_PARSE, NULL_LOG, config );
+ parser2 = new GNUCPPSourceParser(scanner, ParserMode.COMPLETE_PARSE, NULL_LOG, config);
} else {
ICParserExtensionConfiguration config = null;
- if (useGNUExtensions){
+ if (useGNUExtensions) {
config = new GCCParserExtensionConfiguration();
- } else{
+ } else {
config = new ANSICParserExtensionConfiguration();
}
- parser2 = new GNUCSourceParser(scanner, ParserMode.COMPLETE_PARSE, NULL_LOG, config );
+ parser2 = new GNUCSourceParser(scanner, ParserMode.COMPLETE_PARSE, NULL_LOG, config);
}
return parser2;
}
private boolean getGNUExtension(TestSourceFile file) {
- if(file instanceof ASTWriterTestSourceFile) {
- return ((ASTWriterTestSourceFile)file).isUseGNUExtensions();
- }
- else {
- return false;
- }
+ if (file instanceof ASTWriterTestSourceFile)
+ return ((ASTWriterTestSourceFile) file).isUseGNUExtensions();
+ return false;
}
private ParserLanguage getLanguage(TestSourceFile file) {
- if(file instanceof ASTWriterTestSourceFile) {
- return ((ASTWriterTestSourceFile)file).getParserLanguage();
- }
- else {
- return ParserLanguage.CPP;
- }
+ if (file instanceof ASTWriterTestSourceFile)
+ return ((ASTWriterTestSourceFile) file).getParserLanguage();
+ return ParserLanguage.CPP;
}
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTestSourceFile.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTestSourceFile.java
index 82024fe01eb..d67a2e34232 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTestSourceFile.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ASTWriterTestSourceFile.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.astwriter;
@@ -16,7 +16,6 @@ import org.eclipse.cdt.core.parser.tests.rewrite.TestSourceFile;
/**
* @author Guido Zgraggen IFS
- *
*/
public class ASTWriterTestSourceFile extends TestSourceFile {
private ParserLanguage parserLanguage = ParserLanguage.CPP;
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/AstWriterTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/AstWriterTestSuite.java
index d26fe7dddb7..b95598ad1ca 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/AstWriterTestSuite.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/AstWriterTestSuite.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.astwriter;
@@ -17,35 +17,35 @@ import junit.framework.TestSuite;
/**
* @author Emanuel Graf
*/
-public class AstWriterTestSuite{
+public class AstWriterTestSuite {
public static Test suite() throws Exception {
TestSuite suite = new TestSuite("AstWriterTests");
suite.addTest(SourceRewriteTester.suite("ExpressionTests", "resources/rewrite/ASTWriterExpressionTestSource.awts"));
-
+
suite.addTest(SourceRewriteTester.suite("DelcSpecifierTests", "resources/rewrite/ASTWriterDeclSpecTestSource.awts"));
suite.addTest(SourceRewriteTester.suite("Commented DelcSpecifierTests",
"resources/rewrite/ASTWriterCommentedDeclSpecTestSource.awts"));
-
+
suite.addTest(SourceRewriteTester.suite("DeclaratorTests", "resources/rewrite/ASTWriterDeclaratorTestSource.awts"));
suite.addTest(SourceRewriteTester.suite("Commented DeclaratorTests",
"resources/rewrite/ASTWriterCommentedDeclaratorTestSource.awts"));
-
+
suite.addTest(SourceRewriteTester.suite("StatementsTests", "resources/rewrite/ASTWriterStatementTestSource.awts"));
suite.addTest(SourceRewriteTester.suite("Commented StatementsTests",
"resources/rewrite/ASTWriterCommentedStatementTestSource.awts"));
-
+
suite.addTest(SourceRewriteTester.suite("NameTests", "resources/rewrite/ASTWriterNameTestSource.awts"));
suite.addTest(SourceRewriteTester.suite("Commented NameTests", "resources/rewrite/ASTWriterCommentedNameTestSource.awts"));
-
+
suite.addTest(SourceRewriteTester.suite("InitializerTests", "resources/rewrite/ASTWriterInitializerTestSource.awts"));
-
+
suite.addTest(SourceRewriteTester.suite("DeclarationTests", "resources/rewrite/ASTWriterDeclarationTestSource.awts"));
suite.addTest(SourceRewriteTester.suite("Commented DeclarationTests",
"resources/rewrite/ASTWriterCommentedDeclarationTestSource.awts"));
suite.addTest(SourceRewriteTester.suite("TemplatesTests", "resources/rewrite/ASTWriterTemplateTestSource.awts"));
-
+
suite.addTest(SourceRewriteTester.suite("CommentTests", "resources/rewrite/ASTWriterCommentedTestSource.awts"));
suite.addTest(SourceRewriteTester.suite("NewCommentTests", "resources/rewrite/ASTWriterCommentedTestSource2.awts"));
suite.addTestSuite(ExpressionWriterTest.class);
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ExpressionWriterTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ExpressionWriterTest.java
index be01525aff9..c93c7225e21 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ExpressionWriterTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/ExpressionWriterTest.java
@@ -5,7 +5,8 @@
* accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
- * Contributors: Pascal Kesseli (HSR) - Initial API and implementation
+ * Contributors:
+ * Pascal Kesseli (HSR) - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.astwriter;
@@ -182,8 +183,7 @@ public class ExpressionWriterTest extends TestCase {
ICPPASTLambdaExpression lambda = new CPPASTLambdaExpression();
CPPASTCompoundStatement stmt = new CPPASTCompoundStatement();
stmt.addStatement(new CPPASTReturnStatement(new CPPASTLiteralExpression(
- IASTLiteralExpression.lk_integer_constant,
- new char[] { '7' })));
+ IASTLiteralExpression.lk_integer_constant, new char[] { '7' })));
lambda.setBody(stmt);
return lambda;
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTester.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTester.java
index 26ba7fd4f18..ee1b12a3f24 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTester.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/astwriter/SourceRewriteTester.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.astwriter;
@@ -31,7 +31,6 @@ import org.eclipse.jface.text.TextSelection;
import org.osgi.framework.Bundle;
public class SourceRewriteTester extends TestSuite {
-
private static final String testRegexp = "//!(.*)\\s*(\\w*)*$"; //$NON-NLS-1$
private static final String codeTypeRegexp = "//%(C|CPP)( GNU)?$"; //$NON-NLS-1$
private static final String resultRegexp = "//=.*$"; //$NON-NLS-1$
@@ -56,8 +55,8 @@ public class SourceRewriteTester extends TestSuite {
private static TestSuite createSuite(ArrayList testCases, String name) {
TestSuite suite = new TestSuite(name);
Iterator it = testCases.iterator();
- while(it.hasNext()) {
- RewriteBaseTest subject =it.next();
+ while (it.hasNext()) {
+ RewriteBaseTest subject = it.next();
suite.addTest(subject);
}
return suite;
@@ -77,10 +76,11 @@ public class SourceRewriteTester extends TestSuite {
protected static String getNameOfTest(String line) {
Matcher matcherBeginOfTest = createMatcherFromString(testRegexp, line);
- if(matcherBeginOfTest.find())
+ if (matcherBeginOfTest.find()) {
return matcherBeginOfTest.group(1);
- else
+ } else {
return "Not Named";
+ }
}
protected static boolean lineMatchesBeginOfResult(String line) {
@@ -88,37 +88,37 @@ public class SourceRewriteTester extends TestSuite {
}
private static ArrayList createTests(BufferedReader inputReader) throws Exception {
- String line;
ASTWriterTestSourceFile file = null;
MatcherState matcherState = MatcherState.skip;
ArrayList testCases = new ArrayList();
- while ((line = inputReader.readLine()) != null){
- if(lineMatchesBeginOfTest(line)) {
+ String line;
+ while ((line = inputReader.readLine()) != null) {
+ if (lineMatchesBeginOfTest(line)) {
matcherState = MatcherState.inTest;
file = new ASTWriterTestSourceFile("ASTWritterTest.h"); //$NON-NLS-1$
testCases.add(createTestClass(getNameOfTest(line), file));
continue;
- } else if (lineMatchesBeginOfResult(line)) {
+ } else if (lineMatchesBeginOfResult(line)) {
matcherState = MatcherState.inExpectedResult;
continue;
- }else if (lineMatchesCodeType(line)) {
+ } else if (lineMatchesCodeType(line)) {
matcherState = MatcherState.inSource;
- if(file != null) {
+ if (file != null) {
file.setParserLanguage(getParserLanguage(line));
file.setUseGNUExtensions(useGNUExtensions(line));
}
continue;
}
- switch(matcherState) {
+ switch (matcherState) {
case inSource:
- if(file != null) {
+ if (file != null) {
file.addLineToSource(line);
}
break;
case inExpectedResult:
- if(file != null) {
+ if (file != null) {
file.addLineToExpectedSource(line);
}
break;
@@ -131,11 +131,11 @@ public class SourceRewriteTester extends TestSuite {
protected static boolean useGNUExtensions(String line) {
Matcher matcherBeginOfTest = createMatcherFromString(codeTypeRegexp, line);
- if(matcherBeginOfTest.find()) {
+ if (matcherBeginOfTest.find()) {
String codeType = matcherBeginOfTest.group(2);
- if(codeType == null) {
+ if (codeType == null) {
return false;
- }else {
+ } else {
return true;
}
}
@@ -144,11 +144,11 @@ public class SourceRewriteTester extends TestSuite {
protected static ParserLanguage getParserLanguage(String line) {
Matcher matcherBeginOfTest = createMatcherFromString(codeTypeRegexp, line);
- if(matcherBeginOfTest.find()) {
+ if (matcherBeginOfTest.find()) {
String codeType = matcherBeginOfTest.group(1);
- if(codeType.equalsIgnoreCase("CPP")) { //$NON-NLS-1$
+ if (codeType.equalsIgnoreCase("CPP")) { //$NON-NLS-1$
return ParserLanguage.CPP;
- }else {
+ } else {
return ParserLanguage.C;
}
}
@@ -156,9 +156,9 @@ public class SourceRewriteTester extends TestSuite {
}
private static RewriteBaseTest createTestClass(String testName, ASTWriterTestSourceFile file) throws Exception {
- ASTWriterTest test = new ASTWriterTest(testName,file);
+ ASTWriterTest test = new ASTWriterTest(testName, file);
TextSelection sel = file.getSelection();
- if(sel != null) {
+ if (sel != null) {
test.setFileWithSelection(file.getName());
test.setSelection(sel);
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/ChangeGeneratorTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/ChangeGeneratorTest.java
index 3e38fdb3f41..f40b77b2e2f 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/ChangeGeneratorTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/ChangeGeneratorTest.java
@@ -38,6 +38,10 @@ public abstract class ChangeGeneratorTest extends BaseTestFramework {
super();
}
+ public ChangeGeneratorTest(String name) {
+ super(name);
+ }
+
@Override
protected void setUp() throws Exception {
CCorePlugin.getIndexManager().joinIndexer(IIndexManager.FOREVER, new NullProgressMonitor());
@@ -45,7 +49,7 @@ public abstract class ChangeGeneratorTest extends BaseTestFramework {
}
@Override
- public void runTest() throws Exception{
+ public void runTest() throws Exception {
final ASTModificationStore modStore = new ASTModificationStore();
IFile testFile = importFile("source.h", source); //$NON-NLS-1$
@@ -65,8 +69,7 @@ public abstract class ChangeGeneratorTest extends BaseTestFramework {
changegenartor.generateChange(unit);
Document doc = new Document(source);
- for (Change curChange : ((CompositeChange) changegenartor.getChange())
- .getChildren()) {
+ for (Change curChange : ((CompositeChange) changegenartor.getChange()).getChildren()) {
if (curChange instanceof TextFileChange) {
TextFileChange textChange = (TextFileChange) curChange;
textChange.getEdit().apply(doc);
@@ -77,10 +80,6 @@ public abstract class ChangeGeneratorTest extends BaseTestFramework {
protected abstract ASTVisitor createModificator(ASTModificationStore modStore);
- public ChangeGeneratorTest(String name) {
- super(name);
- }
-
@Override
protected void tearDown() throws Exception {
System.gc();
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/ChangeGeneratorTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/ChangeGeneratorTestSuite.java
index d7c29b43c6f..68acede3815 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/ChangeGeneratorTestSuite.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/ChangeGeneratorTestSuite.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator;
@@ -21,7 +21,6 @@ import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.replace.Replace
/**
* @author Thomas Corbat
- *
*/
public class ChangeGeneratorTestSuite{
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/append/ArrayModifierTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/append/ArrayModifierTest.java
index 54eda488093..c076cf39eea 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/append/ArrayModifierTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/append/ArrayModifierTest.java
@@ -18,6 +18,7 @@ import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTArrayModifier;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTLiteralExpression;
@@ -51,13 +52,14 @@ public class ArrayModifierTest extends ChangeGeneratorTest {
IASTArrayDeclarator arrayDeclarator = (IASTArrayDeclarator)declarator;
arrayDeclarator.getArrayModifiers();
IASTArrayModifier newModifier = new CPPASTArrayModifier();
- IASTExpression expr = new CPPASTLiteralExpression(0, "3"); //$NON-NLS-1$
+ IASTExpression expr = new CPPASTLiteralExpression(
+ IASTLiteralExpression.lk_integer_constant, "3".toCharArray()); //$NON-NLS-1$
newModifier.setConstantExpression(expr);
ASTModification modification = new ASTModification(ModificationKind.APPEND_CHILD, declarator, newModifier, null);
modStore.storeModification(null, modification);
}
return PROCESS_CONTINUE;
- }
+ }
};
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/AddDeclarationBug.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/AddDeclarationBug.java
index 98d6a212734..a4ee61615bd 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/AddDeclarationBug.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/AddDeclarationBug.java
@@ -7,18 +7,18 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software (IFS)- initial API and implementation
+ * Institute for Software (IFS)- initial API and implementation
******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.insertbefore;
import junit.framework.Test;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTStandardFunctionDeclarator;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTParameterDeclaration;
import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest;
@@ -29,26 +29,26 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTParameterDeclaration;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclSpecifier;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclaration;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
-import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification.ModificationKind;
+import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
/**
* @author Emanuel Graf IFS
- *
*/
public class AddDeclarationBug extends ChangeGeneratorTest {
-
-
-
-
- public AddDeclarationBug() {
- super("Add Declaration Bug Test");
+
+ AddDeclarationBug() {
+ super("AddDeclarationBug");
+ }
+
+ public static Test suite() {
+ return new AddDeclarationBug();
}
@Override
protected void setUp() throws Exception {
source = "class A\n{\npublic:\n A();\n virtual ~A();\n int foo();\n \nprivate:\n int help();\n};"; //$NON-NLS-1$
- expectedSource = "class A\n{\npublic:\n A();\n virtual ~A();\n int foo();\n \nprivate:\n int help();\n int exp(int i);\n};"; //$NON-NLS-1$
+ expectedSource = "class A\n{\npublic:\n A();\n virtual ~A();\n int foo();\n \nprivate:\n int help();\n\tint exp(int i);\n};"; //$NON-NLS-1$
super.setUp();
}
@@ -84,8 +84,4 @@ public class AddDeclarationBug extends ChangeGeneratorTest {
}
};
}
-
- public static Test suite() {
- return new AddDeclarationBug();
- }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ArrayModifierTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ArrayModifierTest.java
index 5c748a3ec06..68f994fbdeb 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ArrayModifierTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ArrayModifierTest.java
@@ -7,40 +7,44 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.insertbefore;
import junit.framework.Test;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTExpression;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTArrayModifier;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTLiteralExpression;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
-import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification.ModificationKind;
+import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
public class ArrayModifierTest extends ChangeGeneratorTest {
- public ArrayModifierTest(){
- super("Replace Array Modifier"); //$NON-NLS-1$
+ ArrayModifierTest() {
+ super("ArrayModifierTest");
+ }
+
+ public static Test suite() {
+ return new ArrayModifierTest();
}
@Override
protected void setUp() throws Exception {
- source = "int *pi[3];"; //$NON-NLS-1$
- expectedSource = "int *pi[5][3];"; //$NON-NLS-1$
+ source = "int* pi[3];"; //$NON-NLS-1$
+ expectedSource = "int* pi[5][3];"; //$NON-NLS-1$
super.setUp();
}
@Override
- protected ASTVisitor createModificator(
- final ASTModificationStore modStore) {
+ protected ASTVisitor createModificator(final ASTModificationStore modStore) {
return new ASTVisitor() {
{
shouldVisitDeclarators = true;
@@ -49,11 +53,12 @@ public class ArrayModifierTest extends ChangeGeneratorTest {
@Override
public int visit(IASTDeclarator declarator) {
if (declarator instanceof IASTArrayDeclarator) {
- IASTArrayDeclarator arrayDeclarator = (IASTArrayDeclarator)declarator;
-
+ IASTArrayDeclarator arrayDeclarator = (IASTArrayDeclarator) declarator;
+
IASTArrayModifier[] modifiers = arrayDeclarator.getArrayModifiers();
IASTArrayModifier newModifier = new CPPASTArrayModifier();
- IASTExpression expr = new CPPASTLiteralExpression(0, "5"); //$NON-NLS-1$
+ IASTExpression expr =
+ new CPPASTLiteralExpression(IASTLiteralExpression.lk_integer_constant, "5".toCharArray()); //$NON-NLS-1$
newModifier.setConstantExpression(expr);
ASTModification modification = new ASTModification(ModificationKind.INSERT_BEFORE, modifiers[0], newModifier, null);
modStore.storeModification(null, modification);
@@ -62,8 +67,4 @@ public class ArrayModifierTest extends ChangeGeneratorTest {
}
};
}
-
- public static Test suite() {
- return new ArrayModifierTest();
- }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ArraySizeExpressionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ArraySizeExpressionTest.java
index 19767bdc6a7..df71239e075 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ArraySizeExpressionTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ArraySizeExpressionTest.java
@@ -7,17 +7,18 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.insertbefore;
import junit.framework.Test;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
import org.eclipse.cdt.core.dom.ast.IASTTypeId;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNewExpression;
import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTArrayModifier;
@@ -25,25 +26,25 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTLiteralExpression;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
-
-
public class ArraySizeExpressionTest extends ChangeGeneratorTest {
- public ArraySizeExpressionTest(){
- super("Insert Array Size Expression"); //$NON-NLS-1$
+ ArraySizeExpressionTest() {
+ super("ArraySizeExpressionTest");
+ }
+
+ public static Test suite() {
+ return new ArraySizeExpressionTest();
}
@Override
protected void setUp() throws Exception {
- source = "int *values = new int[5];"; //$NON-NLS-1$
- expectedSource = "int *values = new int[6][5];"; //$NON-NLS-1$
+ source = "int* values = new int[5];"; //$NON-NLS-1$
+ expectedSource = "int* values = new int[6][5];"; //$NON-NLS-1$
super.setUp();
}
-
@Override
- protected ASTVisitor createModificator(
- final ASTModificationStore modStore) {
+ protected ASTVisitor createModificator(final ASTModificationStore modStore) {
return new ASTVisitor() {
{
shouldVisitExpressions = true;
@@ -56,7 +57,8 @@ public class ArraySizeExpressionTest extends ChangeGeneratorTest {
IASTTypeId id= newExpression.getTypeId();
IASTArrayDeclarator dtor= (IASTArrayDeclarator) id.getAbstractDeclarator();
IASTArrayModifier[] mods= dtor.getArrayModifiers();
- IASTArrayModifier add= new CPPASTArrayModifier(new CPPASTLiteralExpression(0, "6"));
+ IASTArrayModifier add= new CPPASTArrayModifier(
+ new CPPASTLiteralExpression(IASTLiteralExpression.lk_integer_constant, "6".toCharArray()));
ASTModification modification = new ASTModification(ASTModification.ModificationKind.INSERT_BEFORE, mods[0], add, null);
modStore.storeModification(null, modification);
}
@@ -64,9 +66,4 @@ public class ArraySizeExpressionTest extends ChangeGeneratorTest {
}
};
}
-
- public static Test suite() {
- return new ArraySizeExpressionTest();
-
- }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/CtorChainInitializerTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/CtorChainInitializerTest.java
index 68c0d52dba0..983348efcbb 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/CtorChainInitializerTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/CtorChainInitializerTest.java
@@ -7,14 +7,14 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.insertbefore;
import junit.framework.Test;
-import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConstructorChainInitializer;
import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTConstructorChainInitializer;
@@ -22,25 +22,28 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionDeclarator;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTIdExpression;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
-import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification.ModificationKind;
+import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
public class CtorChainInitializerTest extends ChangeGeneratorTest {
- public CtorChainInitializerTest(){
- super("Insert Before Ctor Initializer"); //$NON-NLS-1$
+ CtorChainInitializerTest() {
+ super("CtorChainInitializerTest");
+ }
+
+ public static Test suite() {
+ return new CtorChainInitializerTest();
}
@Override
protected void setUp() throws Exception {
- source = "TestClass::TestClass(int a, int b):beta(b){\n}\n\n"; //$NON-NLS-1$
- expectedSource = "TestClass::TestClass(int a, int b):alpha(a), beta(b){\n}\n\n"; //$NON-NLS-1$
+ source = "TestClass::TestClass(int a, int b):beta(b) {\n}\n\n"; //$NON-NLS-1$
+ expectedSource = "TestClass::TestClass(int a, int b) :\n\t\talpha(a), beta(b) {\n}\n\n"; //$NON-NLS-1$
super.setUp();
}
@Override
- protected ASTVisitor createModificator(
- final ASTModificationStore modStore) {
+ protected ASTVisitor createModificator(final ASTModificationStore modStore) {
return new ASTVisitor() {
{
shouldVisitDeclarators = true;
@@ -49,7 +52,7 @@ public class CtorChainInitializerTest extends ChangeGeneratorTest {
@Override
public int visit(IASTDeclarator declarator) {
if (declarator instanceof CPPASTFunctionDeclarator) {
- CPPASTFunctionDeclarator functionDeclarator = (CPPASTFunctionDeclarator)declarator;
+ CPPASTFunctionDeclarator functionDeclarator = (CPPASTFunctionDeclarator) declarator;
ICPPASTConstructorChainInitializer ctorInitializer = functionDeclarator.getConstructorChain()[0];
CPPASTIdExpression initExpr = new CPPASTIdExpression(new CPPASTName("a".toCharArray())); //$NON-NLS-1$
CPPASTName initName = new CPPASTName("alpha".toCharArray()); //$NON-NLS-1$
@@ -63,9 +66,4 @@ public class CtorChainInitializerTest extends ChangeGeneratorTest {
}
};
}
-
- public static Test suite() {
- return new CtorChainInitializerTest();
-
- }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ExceptionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ExceptionTest.java
index 85250707810..4612e5a13fb 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ExceptionTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ExceptionTest.java
@@ -7,16 +7,16 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.insertbefore;
import junit.framework.Test;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTTypeId;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTDeclarator;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionDeclarator;
@@ -24,15 +24,19 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclSpecifier;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTTypeId;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
-import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification.ModificationKind;
+import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
public class ExceptionTest extends ChangeGeneratorTest {
- public ExceptionTest(){
- super("Insert Before Exception Declaration"); //$NON-NLS-1$
+ ExceptionTest() {
+ super("ExceptionTest");
}
+ public static Test suite() {
+ return new ExceptionTest();
+ }
+
@Override
protected void setUp() throws Exception {
source = "void foo(int parameter) throw (/*Test*/float) /*Test2*/{\n}\n\n"; //$NON-NLS-1$
@@ -41,8 +45,7 @@ public class ExceptionTest extends ChangeGeneratorTest {
}
@Override
- protected ASTVisitor createModificator(
- final ASTModificationStore modStore) {
+ protected ASTVisitor createModificator(final ASTModificationStore modStore) {
return new ASTVisitor() {
{
shouldVisitDeclarators = true;
@@ -69,9 +72,4 @@ public class ExceptionTest extends ChangeGeneratorTest {
}
};
}
-
- public static Test suite() {
- return new ExceptionTest();
-
- }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ExpressionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ExpressionTest.java
index 6dcd8c941e7..af06f5d44fb 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ExpressionTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/ExpressionTest.java
@@ -7,16 +7,16 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.insertbefore;
import junit.framework.Test;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
import org.eclipse.cdt.core.dom.ast.IASTExpression;
import org.eclipse.cdt.core.dom.ast.IASTExpressionList;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTBinaryExpression;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTIdExpression;
@@ -25,14 +25,14 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
-
-
-
-
public class ExpressionTest extends ChangeGeneratorTest {
- public ExpressionTest(){
- super("Insert Expression"); //$NON-NLS-1$
+ ExpressionTest() {
+ super("ExpressionTest");
+ }
+
+ public static Test suite() {
+ return new ExpressionTest();
}
@Override
@@ -41,10 +41,9 @@ public class ExpressionTest extends ChangeGeneratorTest {
expectedSource = "void main(){int s = 0, c = 0, h = 0;\ns = 3, c = 9, h = 5;}"; //$NON-NLS-1$
super.setUp();
}
-
+
@Override
- protected ASTVisitor createModificator(
- final ASTModificationStore modStore) {
+ protected ASTVisitor createModificator(final ASTModificationStore modStore) {
return new ASTVisitor() {
{
shouldVisitExpressions = true;
@@ -63,9 +62,4 @@ public class ExpressionTest extends ChangeGeneratorTest {
}
};
}
-
- public static Test suite() {
- return new ExpressionTest();
-
- }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/FirstParameterTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/FirstParameterTest.java
index 0646e1e5966..52e3fc5e10d 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/FirstParameterTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/FirstParameterTest.java
@@ -7,16 +7,16 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.insertbefore;
import junit.framework.Test;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTDeclarator;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionDeclarator;
@@ -24,17 +24,17 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTParameterDeclaration;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclSpecifier;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
-import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification.ModificationKind;
-
-
-
-
+import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
public class FirstParameterTest extends ChangeGeneratorTest {
- public FirstParameterTest(){
- super("Insert Before First Parameter"); //$NON-NLS-1$
+ FirstParameterTest() {
+ super("FirstParameterTest");
+ }
+
+ public static Test suite() {
+ return new FirstParameterTest();
}
@Override
@@ -43,11 +43,9 @@ public class FirstParameterTest extends ChangeGeneratorTest {
expectedSource = "void foo(int newParameter, int a){\n}\n\n"; //$NON-NLS-1$
super.setUp();
}
-
@Override
- protected ASTVisitor createModificator(
- final ASTModificationStore modStore) {
+ protected ASTVisitor createModificator(final ASTModificationStore modStore) {
return new ASTVisitor() {
{
shouldVisitDeclarators = true;
@@ -77,9 +75,4 @@ public class FirstParameterTest extends ChangeGeneratorTest {
}
};
}
-
- public static Test suite() {
- return new FirstParameterTest();
-
- }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/InsertBeforeTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/InsertBeforeTestSuite.java
index 8790942047d..bd847e623ad 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/InsertBeforeTestSuite.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/InsertBeforeTestSuite.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.insertbefore;
@@ -16,12 +16,11 @@ import junit.framework.TestSuite;
/**
* @author Thomas Corbat
- *
*/
-public class InsertBeforeTestSuite{
+public class InsertBeforeTestSuite {
public static Test suite() throws Exception {
- TestSuite suite = new TestSuite("Changegenerator InsertBefore Tests");
+ TestSuite suite = new TestSuite("ChangeGenerator InsertBefore Tests");
suite.addTest(FirstParameterTest.suite());
suite.addTest(PointerParameterTest.suite());
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/MultilineWhitespaceHandlingTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/MultilineWhitespaceHandlingTest.java
index f1b0c65f424..fd334b535b6 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/MultilineWhitespaceHandlingTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/MultilineWhitespaceHandlingTest.java
@@ -7,50 +7,44 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.insertbefore;
import junit.framework.Test;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
import org.eclipse.cdt.core.dom.ast.IASTDeclarationStatement;
import org.eclipse.cdt.core.dom.ast.IASTForStatement;
import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTStatement;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleDeclSpecifier;
import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
-
-
-
-
public class MultilineWhitespaceHandlingTest extends ChangeGeneratorTest {
- public MultilineWhitespaceHandlingTest(){
- super("Multiline Whitespace Handling"); //$NON-NLS-1$
- }
-
- @Override
- protected void setUp() throws Exception {
- source = "void foo(){\r\n\r\n for(int i = 0; i < 10; i++){\r\n\r\n }\r\n}\r\n"; //$NON-NLS-1$
- expectedSource = "void foo(){\r\n\r\n for(int i = 0; i < 10; i++){\r\n int i;\r\n int j;\r\n\r\n }\r\n}\r\n"; //$NON-NLS-1$
- super.setUp();
+ MultilineWhitespaceHandlingTest() {
+ super("MultilineWhitespaceHandlingTest");
}
public static Test suite() {
return new MultilineWhitespaceHandlingTest();
}
+ @Override
+ protected void setUp() throws Exception {
+ source = "void foo() {\r\n\r\n\tfor(int i = 0; i < 10; i++) {\r\n\r\n\t}\r\n}\r\n"; //$NON-NLS-1$
+ expectedSource = "void foo() {\r\n\r\n\tfor(int i = 0; i < 10; i++) {\r\n\t\tint i;\r\n\t\tint j;\r\n\r\n\t}\r\n}\r\n"; //$NON-NLS-1$
+ super.setUp();
+ }
@Override
- protected ASTVisitor createModificator(
- final ASTModificationStore modStore) {
+ protected ASTVisitor createModificator(final ASTModificationStore modStore) {
return new ASTVisitor() {
{
shouldVisitStatements = true;
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/PointerParameterTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/PointerParameterTest.java
index 46ae41e6c06..aebdd2799d6 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/PointerParameterTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/PointerParameterTest.java
@@ -7,27 +7,31 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.insertbefore;
import junit.framework.Test;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTPointerOperator;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionDeclarator;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTPointer;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
-import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification.ModificationKind;
+import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
public class PointerParameterTest extends ChangeGeneratorTest {
- public PointerParameterTest(){
- super("Insert Pointer for Parameter"); //$NON-NLS-1$
+ PointerParameterTest() {
+ super("PointerParameterTest");
+ }
+
+ public static Test suite() {
+ return new PointerParameterTest();
}
@Override
@@ -38,8 +42,7 @@ public class PointerParameterTest extends ChangeGeneratorTest {
}
@Override
- protected ASTVisitor createModificator(
- final ASTModificationStore modStore) {
+ protected ASTVisitor createModificator(final ASTModificationStore modStore) {
return new ASTVisitor() {
{
shouldVisitDeclarators = true;
@@ -63,9 +66,4 @@ public class PointerParameterTest extends ChangeGeneratorTest {
}
};
}
-
- public static Test suite() {
- return new PointerParameterTest();
-
- }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/SelfInsertionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/SelfInsertionTest.java
index 946678acd02..ebaf97b3a3c 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/SelfInsertionTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/insertbefore/SelfInsertionTest.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.insertbefore;
@@ -21,31 +21,25 @@ import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGenerator
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
-
-
-
-
public class SelfInsertionTest extends ChangeGeneratorTest {
- public SelfInsertionTest(){
- super("Self Insertion Test"); //$NON-NLS-1$
- }
-
- @Override
- protected void setUp() throws Exception {
- source = "void foo(){\r\n\r\n for(int i = 0; i < 10; i++){\r\n }\r\n}\r\n"; //$NON-NLS-1$
- expectedSource = "void foo(){\r\n\r\n for(int i = 0; i < 10; i++){\r\n for(int i = 0;i < 10;i++){\r\n }\r\n }\r\n}\r\n"; //$NON-NLS-1$
- super.setUp();
+ SelfInsertionTest() {
+ super("SelfInsertionTest");
}
public static Test suite() {
return new SelfInsertionTest();
}
+ @Override
+ protected void setUp() throws Exception {
+ source = "void foo() {\r\n\r\n\tfor (int i = 0; i < 10; i++) {\r\n\t}\r\n}\r\n"; //$NON-NLS-1$
+ expectedSource = "void foo() {\r\n\r\n\tfor (int i = 0; i < 10; i++) {\r\n\t\tfor (int i = 0; i < 10; i++) {\r\n\t\t}\r\n\t}\r\n}\r\n"; //$NON-NLS-1$
+ super.setUp();
+ }
@Override
- protected ASTVisitor createModificator(
- final ASTModificationStore modStore) {
+ protected ASTVisitor createModificator(final ASTModificationStore modStore) {
return new ASTVisitor() {
{
shouldVisitStatements = true;
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/MoveRenameTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/MoveRenameTest.java
index a6b0409d91e..57cbb37f25a 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/MoveRenameTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/MoveRenameTest.java
@@ -7,16 +7,16 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.replace;
import junit.framework.Test;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier;
import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompositeTypeSpecifier;
@@ -25,32 +25,25 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclaration;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
-
-
-
-
public class MoveRenameTest extends ChangeGeneratorTest {
- public MoveRenameTest(){
- super("Swap Rename Declarations"); //$NON-NLS-1$
- }
-
- @Override
- protected void setUp() throws Exception {
-
- source = "#ifndef A_H_\r\n#define A_H_\r\n\r\nclass A {\r\n\r\nprivate:\r\n int b;\r\n int a;\r\n};\r\n\r\n#endif /*A_H_*/\r\n\r\n"; //$NON-NLS-1$
- expectedSource = "#ifndef A_H_\r\n#define A_H_\r\n\r\nclass A {\r\n\r\nprivate:\r\n int d;\r\n int b;\r\n};\r\n\r\n#endif /*A_H_*/\r\n\r\n"; //$NON-NLS-1$
- super.setUp();
+ MoveRenameTest() {
+ super("MoveRenameTest");
}
-
- public static Test suite() {
+ public static Test suite() {
return new MoveRenameTest();
}
@Override
- protected ASTVisitor createModificator(
- final ASTModificationStore modStore) {
+ protected void setUp() throws Exception {
+ source = "#ifndef A_H_\r\n#define A_H_\r\n\r\nclass A {\r\n\r\nprivate:\r\n\tint b;\r\n\tint a;\r\n};\r\n\r\n#endif /*A_H_*/\r\n\r\n"; //$NON-NLS-1$
+ expectedSource = "#ifndef A_H_\r\n#define A_H_\r\n\r\nclass A {\r\n\r\nprivate:\r\n\tint d;\r\n\tint b;\r\n};\r\n\r\n#endif /*A_H_*/\r\n\r\n"; //$NON-NLS-1$
+ super.setUp();
+ }
+
+ @Override
+ protected ASTVisitor createModificator(final ASTModificationStore modStore) {
return new ASTVisitor() {
{
shouldVisitDeclSpecifiers = true;
@@ -70,8 +63,6 @@ public class MoveRenameTest extends ChangeGeneratorTest {
}
return super.visit(declSpec);
}
-
};
}
-
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/MoveTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/MoveTest.java
index 9904ceebd81..a5c48afa3a0 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/MoveTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/MoveTest.java
@@ -7,46 +7,40 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.replace;
import junit.framework.Test;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier;
import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompositeTypeSpecifier;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
-
-
-
-
public class MoveTest extends ChangeGeneratorTest {
- public MoveTest(){
- super("Swap Declarations"); //$NON-NLS-1$
+ MoveTest() {
+ super("MoveTest");
}
-
- @Override
- protected void setUp() throws Exception {
- source = "#ifndef A_H_\r\n#define A_H_\r\n\r\nclass A {\r\n\r\nprivate:\r\n int b;\r\n int a;\r\n};\r\n\r\n#endif /*A_H_*/\r\n\r\n"; //$NON-NLS-1$
- expectedSource = "#ifndef A_H_\r\n#define A_H_\r\n\r\nclass A {\r\n\r\nprivate:\r\n int a;\r\n int b;\r\n};\r\n\r\n#endif /*A_H_*/\r\n\r\n"; //$NON-NLS-1$
- super.setUp();
- }
-
- public static Test suite() {
+
+ public static Test suite() {
return new MoveTest();
-
}
@Override
- protected ASTVisitor createModificator(
- final ASTModificationStore modStore) {
+ protected void setUp() throws Exception {
+ source = "#ifndef A_H_\r\n#define A_H_\r\n\r\nclass A {\r\n\r\nprivate:\r\n\tint b;\r\n\tint a;\r\n};\r\n\r\n#endif /*A_H_*/\r\n\r\n"; //$NON-NLS-1$
+ expectedSource = "#ifndef A_H_\r\n#define A_H_\r\n\r\nclass A {\r\n\r\nprivate:\r\n\tint a;\r\n\tint b;\r\n};\r\n\r\n#endif /*A_H_*/\r\n\r\n"; //$NON-NLS-1$
+ super.setUp();
+ }
+
+ @Override
+ protected ASTVisitor createModificator(final ASTModificationStore modStore) {
return new ASTVisitor() {
{
shouldVisitDeclSpecifiers = true;
@@ -64,8 +58,6 @@ public class MoveTest extends ChangeGeneratorTest {
}
return super.visit(declSpec);
}
-
};
}
-
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/ReplaceInsertStatementTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/ReplaceInsertStatementTest.java
index 7f44495590a..ec9997d57c1 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/ReplaceInsertStatementTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/ReplaceInsertStatementTest.java
@@ -7,12 +7,13 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.replace;
import junit.framework.Test;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
import org.eclipse.cdt.core.dom.ast.IASTExpressionStatement;
@@ -20,7 +21,6 @@ import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
import org.eclipse.cdt.core.dom.ast.IASTStatement;
import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTBinaryExpression;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTExpressionStatement;
@@ -33,43 +33,37 @@ import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
public class ReplaceInsertStatementTest extends ChangeGeneratorTest {
- public ReplaceInsertStatementTest() {
- super("Replace Insert Statement Test");
+ ReplaceInsertStatementTest() {
+ super("ReplaceInsertStatementTest");
+ }
+
+ public static Test suite() {
+ return new ReplaceInsertStatementTest();
}
@Override
protected void setUp() throws Exception {
- source = "void main(){\r\n int i = 0;\r\n ++i;\r\n}"; //$NON-NLS-1$
- expectedSource = "void main(){\r\n int i = 0;\r\n i = 42;\r\n i++;\r\n}"; //$NON-NLS-1$
+ source = "void main() {\r\n\tint i = 0;\r\n\t++i;\r\n}"; //$NON-NLS-1$
+ expectedSource = "void main() {\r\n\tint i = 0;\r\n\ti = 42;\r\n\ti++;\r\n}"; //$NON-NLS-1$
super.setUp();
}
- public static Test suite() {
- return new ReplaceInsertStatementTest();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest#createModificator(org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore)
- */
@Override
- protected ASTVisitor createModificator(
- final ASTModificationStore modStore) {
+ protected ASTVisitor createModificator(final ASTModificationStore modStore) {
return new ASTVisitor() {
{
shouldVisitStatements = true;
}
-
@Override
public int visit(IASTStatement statement) {
if (statement instanceof IASTCompoundStatement) {
IASTCompoundStatement compStmt = (IASTCompoundStatement) statement;
IASTStatement stmt = compStmt.getStatements()[1];
- IASTIdExpression id = new CPPASTIdExpression(
- new CPPASTName("i".toCharArray()));
+ IASTIdExpression id = new CPPASTIdExpression(new CPPASTName("i".toCharArray()));
IASTLiteralExpression value = new CPPASTLiteralExpression(
- IASTLiteralExpression.lk_integer_constant, "42");
+ IASTLiteralExpression.lk_integer_constant, "42".toCharArray());
IASTExpressionStatement insertStmt = new CPPASTExpressionStatement(
new CPPASTBinaryExpression(
IASTBinaryExpression.op_assign, id, value));
@@ -82,15 +76,12 @@ public class ReplaceInsertStatementTest extends ChangeGeneratorTest {
incExp);
ASTModification replaceMod = new ASTModification(
- ASTModification.ModificationKind.REPLACE, stmt,
- replaceStatement, null);
+ ASTModification.ModificationKind.REPLACE, stmt, replaceStatement, null);
modStore.storeModification(null, replaceMod);
ASTModification insertMod = new ASTModification(
- ASTModification.ModificationKind.INSERT_BEFORE,
- stmt, insertStmt, null);
+ ASTModification.ModificationKind.INSERT_BEFORE, stmt, insertStmt, null);
modStore.storeModification(null, insertMod);
-
}
return PROCESS_CONTINUE;
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/StatementTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/StatementTest.java
index 6bad67fc412..a45f81c17f0 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/StatementTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/changegenerator/replace/StatementTest.java
@@ -7,16 +7,16 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.replace;
import junit.framework.Test;
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTIfStatement;
import org.eclipse.cdt.core.dom.ast.IASTStatement;
import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompoundStatement;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTExpressionStatement;
@@ -26,31 +26,25 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTUnaryExpression;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
-
-
-
-
public class StatementTest extends ChangeGeneratorTest {
-
- public StatementTest(){
- super("Replace Then-Statement"); //$NON-NLS-1$
- }
-
- @Override
- protected void setUp() throws Exception {
- source = "int f()\r\n{\r\n\tint i = 0;\r\n\tif(i < 1){\r\n\t\t++i;\r\n\t}\r\n}\r\n"; //$NON-NLS-1$
- expectedSource = "int f()\r\n{\r\n\tint i = 0;\r\n\tif(i < 1){\r\n\t i++;\r\n\t}\r\n}\r\n"; //$NON-NLS-1$
- super.setUp();
+
+ StatementTest() {
+ super("StatementTest");
}
public static Test suite() {
return new StatementTest();
}
+ @Override
+ protected void setUp() throws Exception {
+ source = "int f()\r\n{\r\n\tint i = 0;\r\n\tif (i < 1) {\r\n\t\t++i;\r\n\t}\r\n}\r\n"; //$NON-NLS-1$
+ expectedSource = "int f()\r\n{\r\n\tint i = 0;\r\n\tif (i < 1) {\r\n\t\ti++;\r\n\t}\r\n}\r\n"; //$NON-NLS-1$
+ super.setUp();
+ }
@Override
- protected ASTVisitor createModificator(
- final ASTModificationStore modStore) {
+ protected ASTVisitor createModificator(final ASTModificationStore modStore) {
return new ASTVisitor() {
{
shouldVisitStatements = true;
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTest.java
index 63ac04f1a90..067a29f8f28 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTest.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.comenthandler;
@@ -33,9 +33,12 @@ import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
import org.eclipse.core.runtime.CoreException;
/**
- * This test tests the behavoir of the class ASTCommenter. It checks if the ASTCommenter assigns the comments contained in an AST to the right ASTNodes.
- * The source for the CommentHandling tests is located at /resources/rewrite/CommentHandlingTestSource.rts.
- * This file contains the source code and the expected output for all the tests. Following a little example how such a test looks like:
+ * This test tests the behavior of the class ASTCommenter. It checks if the ASTCommenter assigns
+ * the comments contained in an AST to the right ASTNodes.
+ * The source for the CommentHandling tests is located at
+ * /resources/rewrite/CommentHandlingTestSource.rts.
+ * This file contains the source code and the expected output for all the tests.
+ * Following a little example how such a test looks like:
*
*
* //!NameOfTheTest - will be used as JUnit test name
@@ -62,12 +65,13 @@ import org.eclipse.core.runtime.CoreException;
*
* The second line (//#org.eclipse.cdt...) indicates the test class (in this case this class).
* The "//=" indicates the beginning of the expected test result.
- * The test result contains three sections (separated by "=>leading", "=>trailing" and "=>freestanding").
- * Each section contains the raw signature of the node to which a comment is assigned plus " = " and the comment. If there are several comments
- * assigned to the same node they are concatenated with a " , ".
+ * The test result contains three sections (separated by "=>leading", "=>trailing" and
+ * "=>freestanding").
+ * Each section contains the raw signature of the node to which a comment is assigned plus " = "
+ * and the comment. If there are several comments assigned to the same node they are concatenated
+ * with a " , ".
*
* @author Guido Zgraggen IFS, Lukas Felber IFS
- *
*/
public class CommentHandlingTest extends RewriteBaseTest {
@@ -88,12 +92,11 @@ public class CommentHandlingTest extends RewriteBaseTest {
@Override
protected void runTest() throws Throwable {
-
if (fileMap.size() == 0) {
fail("No file for testing"); //$NON-NLS-1$
}
- for(String fileName : fileMap.keySet()) {
+ for (String fileName : fileMap.keySet()) {
TestSourceFile file = fileMap.get(fileName);
NodeCommentMap nodeMap = ASTCommenter.getCommentedNodeMap(getUnit(fileName));
@@ -105,8 +108,8 @@ public class CommentHandlingTest extends RewriteBaseTest {
}
private StringBuilder buildExpectedResult(TestSourceFile file) {
-
- Matcher matcher = Pattern.compile(CommentHandlingTest.getSeparatingRegexp(), Pattern.MULTILINE | Pattern.DOTALL).matcher(file.getExpectedSource());
+ Matcher matcher = Pattern.compile(CommentHandlingTest.getSeparatingRegexp(),
+ Pattern.MULTILINE | Pattern.DOTALL).matcher(file.getExpectedSource());
if (!matcher.find()) {
fail("Missing expected section. Expected result code must be of the following format:\n\"=>leading\n...\n=>trailing\n...\n=>freestanding\""); //$NON-NLS-1$
}
@@ -143,7 +146,6 @@ public class CommentHandlingTest extends RewriteBaseTest {
StringBuilder output = new StringBuilder();
for (IASTNode actNode : keyTree) {
ArrayList comments = map.get(actNode);
-
output.append(getSignature(actNode) + " = "); //$NON-NLS-1$
boolean first = true;
for (IASTComment actComment : comments) {
@@ -170,11 +172,13 @@ public class CommentHandlingTest extends RewriteBaseTest {
}
private static String getSeparatingRegexp() {
- return LEADING_COMMENT_SEPARATOR + ANY_CHAR_REGEXP + TRAILING_COMMENT_SEPARATOR + ANY_CHAR_REGEXP + FREESTANDING_COMMENT_SEPARATOR + ANY_CHAR_REGEXP;
+ return LEADING_COMMENT_SEPARATOR + ANY_CHAR_REGEXP + TRAILING_COMMENT_SEPARATOR +
+ ANY_CHAR_REGEXP + FREESTANDING_COMMENT_SEPARATOR + ANY_CHAR_REGEXP;
}
private IASTTranslationUnit getUnit(String fileName) throws CoreException {
- ITranslationUnit tu = (ITranslationUnit) CCorePlugin.getDefault().getCoreModel().create(project.getFile(fileName));
+ ITranslationUnit tu = (ITranslationUnit) CCorePlugin.getDefault().getCoreModel().create(
+ project.getFile(fileName));
return tu.getAST();
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTestSuite.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTestSuite.java
index 0aa0ead6105..0eb83f788cf 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTestSuite.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/CommentHandlingTestSuite.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.comenthandler;
@@ -18,18 +18,14 @@ import org.eclipse.cdt.core.parser.tests.rewrite.RewriteTester;
/**
* @author Guido Zgraggen IFS
- *
*/
public class CommentHandlingTestSuite extends TestSuite {
public static Test suite() throws Exception {
TestSuite suite = new TestSuite(CommentHandlingTestSuite.class.getName());
-
- suite.addTest(RewriteTester.suite("CommentTests", "resources/rewrite/CommentHandlingTestSource.rts")); //$NON-NLS-1$ //$NON-NLS-2$
-
+ suite.addTest(RewriteTester.suite("CommentTests",
+ "resources/rewrite/CommentHandlingTestSource.rts")); //$NON-NLS-1$ //$NON-NLS-2$
suite.addTestSuite(NodeCommentMapTest.class);
-
return suite;
}
-
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/NodeCommentMapTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/NodeCommentMapTest.java
index 1121f531929..d12dfec2009 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/NodeCommentMapTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/rewrite/comenthandler/NodeCommentMapTest.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
******************************************************************************/
package org.eclipse.cdt.core.parser.tests.rewrite.comenthandler;
@@ -21,10 +21,8 @@ import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
/**
* @author Guido Zgraggen IFS
- *
*/
public class NodeCommentMapTest extends TestCase {
-
private NodeCommentMap map;
@Override
@@ -39,7 +37,6 @@ public class NodeCommentMapTest extends TestCase {
public void testNoComment(){
ASTNode node = new CPPASTName();
-
assertEquals(0, map.getLeadingCommentsForNode(node).size());
assertEquals(0, map.getTrailingCommentsForNode(node).size());
assertEquals(0, map.getFreestandingCommentsForNode(node).size());
@@ -51,7 +48,6 @@ public class NodeCommentMapTest extends TestCase {
IASTComment comm2 = new Comment();
IASTComment comm3 = new Comment();
-
map.addLeadingCommentToNode(node, comm1);
map.addTrailingCommentToNode(node, comm2);
map.addFreestandingCommentToNode(node, comm3);
@@ -88,8 +84,7 @@ public class NodeCommentMapTest extends TestCase {
assertEquals(com1, map.getFreestandingCommentsForNode(node).get(0));
assertEquals(com2, map.getFreestandingCommentsForNode(node).get(1));
}
-
-
+
public void testCommentOnDifferentNodes(){
ASTNode node1 = new CPPASTName();
ASTNode node2 = new CPPASTName();
@@ -129,19 +124,22 @@ public class NodeCommentMapTest extends TestCase {
assertEquals(com3, map.getFreestandingCommentsForNode(node1).get(1));
}
-
//=== InternalComment class for testing
- private class Comment extends ASTNode implements IASTComment{
+ private class Comment extends ASTNode implements IASTComment {
private char[] comment;
public char[] getComment() {
return comment;
}
+
public void setComment(char[] comment) {
this.comment = comment;
}
- //not used
- public boolean isBlockComment() {return false;}
+
+ // not used
+ public boolean isBlockComment() {
+ return false;
+ }
public IASTNode copy() {
return null;
diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclSpecTestSource.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclSpecTestSource.awts
index 7dca475d679..255cd87c3d7 100644
--- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclSpecTestSource.awts
+++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclSpecTestSource.awts
@@ -11,11 +11,12 @@ const int a = 1;
//Test3
volatile int b = 3;
//Test4
-typedef int *intp;
+typedef int* intp;
//Test5
extern int b;
//Test6
static int c;
+
//Test7
int foo()
{
@@ -59,7 +60,7 @@ public:
//!Commented ElaboratedTypeSpecifier 1
//%CPP
//Test1
-class A *A; //Test2
+class A* A; //Test2
//Test3
enum Status{ good, bad}; //Test4
//Test5
diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclarationTestSource.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclarationTestSource.awts
index 8a28473db06..f09bc5f0599 100644
--- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclarationTestSource.awts
+++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclarationTestSource.awts
@@ -76,42 +76,51 @@ extern "C" typedef void FUNC(); /*TEST 2*/
//!Commented NamespaceAlias 1
//%CPP
//TEST 1
-namespace kurz = ziemlichlangernamespace; //TEST 2
+namespace kurz = somenamespace; //TEST 2
//!Commented NamespaceAlias 2
//%CPP
/*TEST 1*/
-namespace kurz = ziemlichlangernamespace; /*TEST 2*/
+namespace kurz = somenamespace; /*TEST 2*/
//!Commented NamespaceDefinition 1
//%CPP
//TEST 1
-namespace ziemlichlangernamespace
+namespace namespace1
{
- //TEST 2
+
+//TEST 2
+
} //TEST 3
//!Commented NamespaceDefinition 2
//%CPP
/*TEST 1*/
-namespace ziemlichlangernamespace
+namespace namespace2
{
- /*TEST 2*/
+
+/*TEST 2*/
+
} /*TEST 3*/
//!Commented NamespaceDefinition 3
//%CPP
-namespace ziemlichlangernamespace
+namespace namespace3
{
- //TEST
+
+//TEST
+
}
//!Commented NamespaceDefinition 4
//%CPP
-namespace ziemlichlangernamespace
+namespace namespace4
{
- //TEST
+
+//TEST
+
}
+
void doIt()
{
int i = 0;
@@ -158,8 +167,9 @@ template<> class MyQueue //TEST 2
{
//TEST 3
std::vector data;
+
public:
- void Add(const double& );
+ void Add(const double&);
void Remove();
void Print();
//TEST 4
@@ -173,8 +183,9 @@ template<> class MyQueue /*TEST 2*/
{
/*TEST 3*/
std::vector data;
+
public:
- void Add(const double& );
+ void Add(const double&);
void Remove();
void Print();
/*TEST 4*/
@@ -214,9 +225,11 @@ class A
//TEST 1
public: //TEST 2
int hallo();
+
/*TEST 3*/
protected: /*TEST 4*/
int b, c;
+
private:
int p;
};
@@ -231,13 +244,13 @@ int i = 2; //TEST 2
/*TEST 1*/
int i = 2; /*TEST 2*/
-//!Commented typename qualfier 1
+//!Commented typename qualifier 1
//%CPP
//TEST 1
-typename T::A *a6; //TEST 2
+typename T::A* a6; //TEST 2
-//!Commented typename qualfier 2
+//!Commented typename qualifier 2
//%CPP
/*TEST 1*/
-typename T::A *a6; /*TEST 2*/
+typename T::A* a6; /*TEST 2*/
diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclaratorTestSource.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclaratorTestSource.awts
index 564bcd0506f..407ee5bfebd 100644
--- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclaratorTestSource.awts
+++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedDeclaratorTestSource.awts
@@ -8,7 +8,7 @@ void foo()
{
int f();
};
- int (B::* pb)() = &B::f;
+ int (B::*pb)() = &B::f;
}
@@ -22,13 +22,14 @@ void foo()
{
int f();
};
- int (B::* pb)() = &B::f;
+ int (B::*pb)() = &B::f;
}
//!Commented CPPFunctionDeclaratorTest 1
//%CPP
-char & operator [](unsigned int);
+char& operator [](unsigned int);
+
//TEST 1
TestClass::TestClass(int a) //TEST 2
{
@@ -38,7 +39,8 @@ TestClass::TestClass(int a) //TEST 2
//!Commented CPPFunctionDeclaratorTest 2
//%CPP
-char & operator [](unsigned int);
+char& operator [](unsigned int);
+
/*TEST 1*/
TestClass::TestClass(int a) /*TEST 2*/
{
@@ -48,7 +50,8 @@ TestClass::TestClass(int a) /*TEST 2*/
//!Commented CPPFunctionDeclaratorTest 3
//%CPP
-char & operator [](unsigned int);
+char& operator [](unsigned int);
+
//TEST 1
TestClass::TestClass(int a)
:alpha(a) //TEST 2
@@ -59,7 +62,8 @@ TestClass::TestClass(int a)
//!Commented CPPFunctionDeclaratorTest 4
//%CPP
-char & operator [](unsigned int);
+char& operator [](unsigned int);
+
/*TEST 1*/
TestClass::TestClass(int a)
:alpha(a) /*TEST 3*/
@@ -76,7 +80,7 @@ void foo()
try {
i++;
}
- catch(...){
+ catch (...){
}
}
@@ -90,7 +94,7 @@ void foo()
try {
i++;
}
- catch(...){
+ catch (...){
}
}
@@ -104,7 +108,7 @@ void foo()
//Test
i++;
}
- catch(...){
+ catch (...){
}
}
@@ -118,7 +122,7 @@ void foo()
{
i++;
}
- catch(...){
+ catch (...){
}
}
@@ -132,7 +136,7 @@ void foo()
//Test
i++;
}
- catch(...){
+ catch (...){
}
}
@@ -145,7 +149,7 @@ void foo()
try {
i++; //Test
}
- catch(...){
+ catch (...){
}
}
@@ -159,7 +163,7 @@ void foo()
i++;
//Test
}
- catch(...){
+ catch (...){
}
}
@@ -172,7 +176,7 @@ void foo()
try {
i++;
} //Test
- catch(...){
+ catch (...){
}
}
@@ -185,7 +189,7 @@ void foo()
try {
i++;
}
- catch(...){
+ catch (...){
//Test
}
}
@@ -199,7 +203,7 @@ void foo()
try {
i++;
}
- catch(...){
+ catch (...){
//Test
}
}
@@ -213,7 +217,7 @@ void foo()
try {
i++;
}
- catch(...){
+ catch (...){
}
//Test
}
@@ -227,9 +231,9 @@ void foo()
try {
i++;
}
- catch(Overflow oo){
+ catch (Overflow oo){
}
- catch(Matherr mm){
+ catch (Matherr mm){
}
}
@@ -242,9 +246,9 @@ void foo()
try {
i++;
}
- catch(Overflow oo){
+ catch (Overflow oo){
}
- catch(Matherr mm){
+ catch (Matherr mm){
//Test
}
}
diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedNameTestSource.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedNameTestSource.awts
index b6009c399a4..916e7952ba1 100644
--- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedNameTestSource.awts
+++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedNameTestSource.awts
@@ -30,7 +30,7 @@ class Foo
{
public:
//Test
- char & operator [](unsigned int);
+ char& operator [](unsigned int);
};
//!Commented OperatorName2
@@ -38,7 +38,7 @@ public:
class Foo
{
public:
- char & operator [](unsigned int); //Test
+ char& operator [](unsigned int); //Test
};
//!Commented ConversionName1
diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedStatementTestSource.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedStatementTestSource.awts
index 9a790cd0c9d..7f6a0c46acb 100644
--- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedStatementTestSource.awts
+++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedStatementTestSource.awts
@@ -2,7 +2,7 @@
//%CPP
void foo()
{
- while(true){
+ while (true){
//TEST 1
break; //TEST 2
}
@@ -13,7 +13,7 @@ void foo()
//%CPP
void foo()
{
- while(true){
+ while (true){
/*TEST 1*/
break; /*TEST 2*/
}
@@ -62,7 +62,7 @@ void foo()
//%CPP
void foo()
{
- while(true){
+ while (true){
//TEST 1
continue; //TEST 2
}
@@ -73,7 +73,7 @@ void foo()
//%CPP
void foo()
{
- while(true){
+ while (true){
/*TEST 1*/
continue; /*TEST 2*/
}
@@ -112,7 +112,7 @@ void foo()
do{ //TEST 2
continue; //TEST 3
//TEST 4
- } while(true); //TEST 5
+ } while (true); //TEST 5
}
@@ -124,7 +124,7 @@ void foo()
//TEST 2
continue; //TEST 3
//TEST 4
- } while(true); //TEST 5
+ } while (true); //TEST 5
}
@@ -136,7 +136,7 @@ void foo()
do{ /*TEST 2*/
continue; /*TEST 3*/
/*TEST 4*/
- } while(true); /*TEST 5*/
+ } while (true); /*TEST 5*/
}
@@ -148,7 +148,7 @@ void foo()
/*TEST 2*/
continue; /*TEST 3*/
/*TEST 4*/
- } while(true); /*TEST 5*/
+ } while (true); /*TEST 5*/
}
@@ -158,7 +158,7 @@ void foo()
{
do{
continue;
- } while(true); /*TEST 1*/
+ } while (true); /*TEST 1*/
}
@@ -197,7 +197,7 @@ void foo()
void foo()
{
//TEST 1
- for(int i = 0;i < 1;++i){ //TEST 2
+ for (int i = 0;i < 1;++i){ //TEST 2
break; //TEST 3
} //TEST 4
}
@@ -207,7 +207,7 @@ void foo()
void foo()
{
//TEST 1
- for(int i = 0;i < 1;++i){
+ for (int i = 0;i < 1;++i){
//TEST 2
break; //TEST 3
} //TEST 4
@@ -219,7 +219,7 @@ void foo()
void foo()
{
/*TEST 1*/
- for(int i = 0;i < 1;++i){ /*TEST 2*/
+ for (int i = 0;i < 1;++i){ /*TEST 2*/
break; /*TEST 3*/
} /*TEST 4*/
}
@@ -229,7 +229,7 @@ void foo()
void foo()
{
/*TEST 1*/
- for(int i = 0;i < 1;++i){
+ for (int i = 0;i < 1;++i){
/*TEST 2*/
break; /*TEST 3*/
} /*TEST 4*/
@@ -240,7 +240,7 @@ void foo()
//%CPP
void foo()
{
- for(int i = 0;i < 1;++i){
+ for (int i = 0;i < 1;++i){
break;
} /*TEST 4*/
}
@@ -385,7 +385,7 @@ void foo()
//%CPP
int f()
{
- if(int c = f()){
+ if (int c = f()){
c++;
} //TEST 1
return i;
@@ -398,7 +398,7 @@ int f()
{
int i = 0;
//TEST 1
- if(i < 1){
+ if (i < 1){
//TEST 3
++i;
//TEST 4
@@ -407,7 +407,7 @@ int f()
--i;
//TEST 6
} //TEST 7
- if(int c = f()){
+ if (int c = f()){
c++;
} //TEST 8
return i;
@@ -420,7 +420,7 @@ int f()
{
int i = 0;
/*TEST 1*/
- if(i < 1){
+ if (i < 1){
/*TEST 1*/
++i;
/*TEST 1*/
@@ -429,7 +429,7 @@ int f()
--i;
/*TEST 1*/
} /*TEST 1*/
- if(int c = f()){
+ if (int c = f()){
c++;
} /*TEST 1*/
return i;
@@ -440,7 +440,7 @@ int f()
//%CPP
int g()
{
- if(10 > 5) //TEST 1
+ if (10 > 5) //TEST 1
return 1; //TEST 2
return 0;
@@ -449,7 +449,7 @@ int g()
//=
int g()
{
- if(10 > 5)
+ if (10 > 5)
//TEST 1
return 1; //TEST 2
@@ -460,7 +460,7 @@ int g()
//%CPP
int g()
{
- if(10 > 5) /*TEST 1*/
+ if (10 > 5) /*TEST 1*/
return 1; /*TEST 2*/
return 0;
@@ -469,7 +469,7 @@ int g()
//=
int g()
{
- if(10 > 5)
+ if (10 > 5)
/*TEST 1*/
return 1; /*TEST 2*/
@@ -583,7 +583,7 @@ void foo()
void foo()
{
//TEST 1
- while(true){ //TEST 2
+ while (true){ //TEST 2
//TEST 3
break; //TEST 4
//TEST 5
@@ -595,7 +595,7 @@ void foo()
void foo()
{
//TEST 1
- while(true){
+ while (true){
//TEST 2
//TEST 3
break; //TEST 4
@@ -609,7 +609,7 @@ void foo()
void foo()
{
/*TEST 1*/
- while(true){ /*TEST 2*/
+ while (true){ /*TEST 2*/
/*TEST 3*/
break; /*TEST 4*/
/*TEST 5*/
@@ -621,7 +621,7 @@ void foo()
void foo()
{
/*TEST 1*/
- while(true){
+ while (true){
/*TEST 2*/
/*TEST 3*/
break; /*TEST 4*/
@@ -634,7 +634,7 @@ void foo()
//%CPP
void foo()
{
- while(true){
+ while (true){
break;
} /*TEST 6*/
}
@@ -650,10 +650,10 @@ int foo()
++i;
return i;
}
- catch(...){
+ catch (...){
}
}
- catch(...){
+ catch (...){
}
}
diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedTestSource.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedTestSource.awts
index 87a1133feb4..a91d64e3e99 100644
--- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedTestSource.awts
+++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedTestSource.awts
@@ -1,45 +1,49 @@
//!CommentRecognition000
//%CPP
-class Klasse0
+class Class0
{
public:
- Klasse0(); /*
+ Class0(); /*
* Comment
*/
std::string toString();
+
private:
int i;
};
//=
-class Klasse0
+class Class0
{
public:
- Klasse0(); /*
+ Class0(); /*
* Comment
*/
std::string toString();
+
private:
int i;
};
//!CommentRecognition00
//%CPP
-class Klasse0
+class Class0
{
public:
- Klasse0(); //Comment
+ Class0(); //Comment
std::string toString();
+
private:
int i;
};
//=
-class Klasse0
+class Class0
{
public:
- Klasse0(); //Comment
+ Class0(); //Comment
std::string toString();
+
private:
int i;
};
@@ -47,12 +51,13 @@ private:
//!CommentRecognition0
//%CPP
//Comment1
-class Klasse0
+class Class0
{
//Comment2
public:
- Klasse0();
+ Class0();
std::string toString();
+
private:
int i;
};
@@ -131,6 +136,7 @@ public:
void lala();
//test
virtual ~test();
+
protected:
class test2
{
@@ -153,6 +159,7 @@ public:
void lala();
//test
virtual ~test();
+
protected:
class test2
{
@@ -175,6 +182,7 @@ public:
void lala();
//test
virtual ~test();
+
protected:
class test2
{
@@ -187,7 +195,7 @@ protected:
//%CPP
class test
{
- //Klasse...
+ //Class...
public:
test();
/*
@@ -196,6 +204,7 @@ public:
void lala();
//test
virtual ~test();
+
protected:
class test2
{
@@ -206,122 +215,133 @@ protected:
//!CommentRecognition1 - von CERP
//%CPP
-class Klasse1
+class Class1
{
//TEST
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition2 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public: //TEST
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition3 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
//TEST
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition4 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition5 - von CERP
//%CPP
-class Klasse1
+class Class1
{ //TEST
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//=
-class Klasse1
+class Class1
{
//TEST
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition6 - von CERP
//%CPP
-class Klasse1{ //TEST
+class Class1{ //TEST
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//=
-class Klasse1
+class Class1
{
//TEST
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition7 - von CERP
//%CPP
-class Klasse1
+class Class1
{//TEST
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//=
-class Klasse1
+class Class1
{
//TEST
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition8 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
int i = 5; //lala
@@ -329,75 +349,82 @@ private:
//!CommentRecognition9 - von CERP
//%CPP
-class Klasse1
+class Class1
{
/*TEST*/
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition10 - von CERP
//%CPP
-class Klasse1{ /*TEST*/
+class Class1{ /*TEST*/
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//=
-class Klasse1
+class Class1
{
/*TEST*/
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition11 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public: /*TEST*/
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition11b - von CERP
//%CPP
-class Klasse1
+class Class1
{
-public: /*TEST*/ Klasse1();
+public: /*TEST*/ Class1();
std::string toString();
+
private:
int i;
};
//=
-class Klasse1
+class Class1
{
public: /*TEST*/
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition12 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
int i = 5; /*TEST*/
@@ -405,25 +432,27 @@ private:
//!CommentRecognition13 - von CERP
//%CPP
-class Klasse1
+class Class1
{
/*
* TEST
*/
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition14 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
int i = 5; /*
@@ -433,47 +462,51 @@ private:
//!CommentRecognition15 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public: /*
* TEST
*/
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition16 - von CERP
//%CPP
-class Klasse1{ //Test mit
+class Class1{ //Test mit
//2 Zeilen
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//=
-class Klasse1
+class Class1
{
//Test mit
//2 Zeilen
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition17 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
int i = 5; //Test mit
@@ -482,48 +515,52 @@ private:
//!CommentRecognition18 - von CERP
//%CPP
-class Klasse1{
+class Class1{
//Test mit
//2 Zeilen
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//=
-class Klasse1
+class Class1
{
//Test mit
//2 Zeilen
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition19 - von CERP
//%CPP
-class Klasse1
+class Class1
{
//Test mit
//2 Zeilen
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition20 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -536,11 +573,12 @@ private:
//!CommentRecognition21 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0; //TEST
@@ -552,11 +590,12 @@ public:
//!CommentRecognition22 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -569,11 +608,12 @@ private:
//!CommentRecognition23 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
//KommentarDavor
void inlineMethode()
{
@@ -587,11 +627,12 @@ private:
//!CommentRecognition24 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -604,11 +645,12 @@ private:
//!CommentRecognition25 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -622,11 +664,12 @@ private:
//!CommentRecognition26 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -641,11 +684,12 @@ private:
//!CommentRecognition27 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -658,11 +702,12 @@ private:
//!CommentRecognition28 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -676,11 +721,12 @@ private:
//!CommentRecognition29 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -695,11 +741,12 @@ private:
//!CommentRecognition30 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
//TEST
void inlineMethode()
{
@@ -713,11 +760,12 @@ private:
//!CommentRecognition31 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
/*TEST*/
void inlineMethode()
{
@@ -732,11 +780,12 @@ private:
//!CommentRecognition32 - von CERP
//%CPP
//Vorher
-class Klasse1 //Nachher
+class Class1 //Nachher
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -750,11 +799,12 @@ private:
//!CommentRecognition33 - von CERP
//%CPP
//Vorher
-class Klasse1 /*Nachher*/
+class Class1 /*Nachher*/
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -768,12 +818,13 @@ private:
//!CommentRecognition34 - von CERP
//%CPP
/*Vorher*/
-class Klasse1
+class Class1
{
/*Nachher*/
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -787,12 +838,13 @@ private:
//!CommentRecognition35 - von CERP
//%CPP
/*Vorher*/
-class Klasse1
+class Class1
{
//Nachher
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -808,12 +860,13 @@ private:
/*
* Vorher
*/
-class Klasse1
+class Class1
{
//Nachher
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -826,11 +879,12 @@ private:
//!CommentRecognition37 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -843,11 +897,12 @@ private:
//!CommentRecognition38 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -860,11 +915,12 @@ private:
//!CommentRecognition39 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -879,11 +935,12 @@ private:
//!CommentRecognition40 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -899,11 +956,12 @@ private:
//!CommentRecognition41 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -917,11 +975,12 @@ private:
//!CommentRecognition42 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
void inlineMethode()
{
int i = 0;
@@ -935,7 +994,7 @@ private:
//!CommentRecognition43 - von CERP
//%CPP
-class Klasse1
+class Class1
{
private:
int i;
@@ -943,7 +1002,7 @@ private:
//!CommentRecognition44 - von CERP
//%CPP
-class Klasse1
+class Class1
{
private:
int i;
@@ -952,7 +1011,7 @@ private:
//!CommentRecognition44b - von CERP
//%CPP
-class Klasse1
+class Class1
{
private:
int i; //TEST
@@ -960,7 +1019,7 @@ private:
//!CommentRecognition44c - von CERP
//%CPP
-class Klasse1
+class Class1
{
private:
int i;
@@ -969,7 +1028,7 @@ private:
//!CommentRecognition44d - von CERP
//%CPP
-class Klasse1
+class Class1
{
private:
int i;
@@ -979,7 +1038,7 @@ private:
//!CommentRecognition45 - von CERP
//%CPP
-class Klasse1
+class Class1
{
private:
//TEST
@@ -988,7 +1047,7 @@ private:
//!CommentRecognition46 - von CERP
//%CPP
-class Klasse1
+class Class1
{
//TEST
private:
@@ -997,137 +1056,148 @@ private:
//!CommentRecognition47 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
private: //TEST
int i;
};
//!CommentRecognition48 - von CERP
//%CPP
-class Klasse1
+class Class1
{
//TEST
public: /*TEST*/
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition48b - von CERP
//%CPP
-class Klasse1
+class Class1
{
//TEST
public: /*TEST*/
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition49 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1(); //TEST1
+ Class1(); //TEST1
//TEST2
std::string toString();
+
private:
int i;
};
//!CommentRecognition50 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1(); /*TEST1*/
+ Class1(); /*TEST1*/
/*TEST2*/
std::string toString();
+
private:
int i;
};
//!CommentRecognition51 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1(); //TEST1
+ Class1(); //TEST1
/*TEST2*/
std::string toString();
+
private:
int i;
};
//!CommentRecognition52 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1(); /*TEST1*/
+ Class1(); /*TEST1*/
//TEST2
std::string toString();
+
private:
int i;
};
//!CommentRecognition53 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1(); /*TEST1*/
+ Class1(); /*TEST1*/
//TEST3
//TEST2
std::string toString();
+
private:
int i;
};
//!CommentRecognition54 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1(); /*TEST1*/
+ Class1(); /*TEST1*/
/*TEST3*/
//TEST2
std::string toString();
+
private:
int i;
};
//!CommentRecognition55 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1(); //TEST1
+ Class1(); //TEST1
/*
* TEST3
*/
std::string toString();
+
private:
int i;
};
//!CommentRecognition56 - von CERP
//%CPP
-class Klasse1
+class Class1
{
public:
- Klasse1(); /*
+ Class1(); /*
* TEST1
*/
//TEST2
std::string toString();
+
private:
int i;
};
@@ -1136,27 +1206,31 @@ private:
//%CPP
namespace testNamespace
{
- class Klasse1
- {
- public:
- Klasse1();
- std::string toString();
- private:
- int i;
- };
+
+class Class1
+{
+public:
+ Class1();
+ std::string toString();
+
+private:
+ int i;
+};
+
}
//!CommentRecognition58 - von CERP
//%CPP
-//Kommentar
+//Comment
namespace testNamespace
{
-class Klasse1
+class Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
@@ -1164,224 +1238,264 @@ private:
}
//=
-//Kommentar
+//Comment
namespace testNamespace
{
- class Klasse1
- {
- public:
- Klasse1();
- std::string toString();
- private:
- int i;
- };
+
+class Class1
+{
+public:
+ Class1();
+ std::string toString();
+
+private:
+ int i;
+};
+
}
//!CommentRecognition59 - von CERP
//%CPP
-namespace testNamespace //Kommentar
+namespace testNamespace //Comment
{
- class Klasse1
- {
- public:
- Klasse1();
- std::string toString();
- private:
- int i;
- };
+
+class Class1
+{
+public:
+ Class1();
+ std::string toString();
+
+private:
+ int i;
+};
+
}
//!CommentRecognition60 - von CERP
//%CPP
-/*Kommentar*/
+/*Comment*/
namespace testNamespace
{
- class Klasse1
- {
- public:
- Klasse1();
- std::string toString();
- private:
- int i;
- };
+
+class Class1
+{
+public:
+ Class1();
+ std::string toString();
+
+private:
+ int i;
+};
+
}
//!CommentRecognition61 - von CERP
//%CPP
-namespace testNamespace /*Kommentar*/
+namespace testNamespace /*Comment*/
{
- class Klasse1
- {
- public:
- Klasse1();
- std::string toString();
- private:
- int i;
- };
+
+class Class1
+{
+public:
+ Class1();
+ std::string toString();
+
+private:
+ int i;
+};
+
}
//!CommentRecognition62 - von CERP
//%CPP
/*
- * Kommentar
+ * Comment
*/
namespace testNamespace
{
- class Klasse1
- {
- public:
- Klasse1();
- std::string toString();
- private:
- int i;
- };
+
+class Class1
+{
+public:
+ Class1();
+ std::string toString();
+
+private:
+ int i;
+};
+
}
//!CommentRecognition63 - von CERP
//%CPP
namespace testNamespace /*
- * Kommentar
+ * Comment
*/
{
- class Klasse1
- {
- public:
- Klasse1();
- std::string toString();
- private:
- int i;
- };
+
+class Class1
+{
+public:
+ Class1();
+ std::string toString();
+
+private:
+ int i;
+};
+
}
//!CommentRecognition64 - von CERP
//%CPP
namespace testNamespace
{
- class Klasse1
- {
- public:
- Klasse1();
- std::string toString();
- private:
- int i;
- };
-} //Kommentar
+
+class Class1
+{
+public:
+ Class1();
+ std::string toString();
+
+private:
+ int i;
+};
+
+} //Comment
//!CommentRecognition65 - von CERP
//%CPP
namespace testNamespace
{
- class Klasse1
- {
- public:
- Klasse1();
- std::string toString();
- private:
- int i;
- };
-} /*Kommentar*/
+
+class Class1
+{
+public:
+ Class1();
+ std::string toString();
+
+private:
+ int i;
+};
+
+} /*Comment*/
//!CommentRecognition66 - von CERP
//%CPP
namespace testNamespace
{
- class Klasse1
- {
- public:
- Klasse1();
- std::string toString();
- private:
- int i;
- };
+
+class Class1
+{
+public:
+ Class1();
+ std::string toString();
+
+private:
+ int i;
+};
+
} /*
- * Kommentar
+ * Comment
*/
//!CommentRecognition67 - von CERP
//%CPP
namespace testNamespace
{
- class Klasse1 //TEST
- {
- public:
- Klasse1();
- std::string toString();
- private:
- int i;
- };
+
+class Class1 //TEST
+{
+public:
+ Class1();
+ std::string toString();
+
+private:
+ int i;
+};
+
}
//!CommentRecognition68 - von CERP
//%CPP
namespace testNamespace
{
- class Klasse1
- {
- public:
- Klasse1();
- std::string toString();
- private:
- int i; //TEST
- };
+
+class Class1
+{
+public:
+ Class1();
+ std::string toString();
+
+private:
+ int i; //TEST
+};
+
}
//!CommentRecognition69 - von CERP
//%CPP
namespace testNamespace
{
- class Klasse1
- {
- public:
- Klasse1();
- std::string toString();
- private:
- int i;
- }; //TEST
+
+class Class1
+{
+public:
+ Class1();
+ std::string toString();
+
+private:
+ int i;
+}; //TEST
+
}
//!CommentRecognition100 - von CERP
//%CPP
-struct Klasse1
+struct Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition101 - von CERP
//%CPP
-//Kommentar
-struct Klasse1
+//Comment
+struct Class1
{
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition102 - von CERP
//%CPP
-struct Klasse1
+struct Class1
{
- //Kommentar
+ //Comment
public:
- Klasse1();
+ Class1();
std::string toString();
+
private:
int i;
};
//!CommentRecognition103 - von CERP
//%CPP
-struct Klasse1
+struct Class1
{
- //Kommentar
+ //Comment
private:
- Klasse1();
+ Class1();
std::string toString();
+
protected:
int i;
};
@@ -1389,11 +1503,12 @@ protected:
//!CommentRecognition104 - von CERP
//%CPP
/*Davor*/
-struct Klasse1 //Kommentar
+struct Class1 //Comment
{
private:
- Klasse1();
+ Class1();
std::string toString();
+
protected:
int i;
};
diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedTestSource2.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedTestSource2.awts
index 42b22752dd6..5568c0a37de 100644
--- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedTestSource2.awts
+++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterCommentedTestSource2.awts
@@ -1,6 +1,7 @@
//!Commented TemplateFunction1
//%CPP
-template int tempFunct(T p)
+template
+int tempFunct(T p)
{
++p;
//Kommentar
@@ -12,7 +13,8 @@ template int tempFunct(T p)
//!Commented TemplateFunction2
//%CPP
//Kommentar
-template int tempFunct(T p)
+template
+int tempFunct(T p)
{
++p;
p + 4;
@@ -22,7 +24,8 @@ template int tempFunct(T p)
//!Commented TemplateFunction3
//%CPP
-template int tempFunct(T p)
+template
+int tempFunct(T p)
{
++p;
p + 4;
diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterDeclSpecTestSource.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterDeclSpecTestSource.awts
index ae154ea2686..542373ff4c8 100644
--- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterDeclSpecTestSource.awts
+++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterDeclSpecTestSource.awts
@@ -7,9 +7,10 @@ inline int foo()
const int a = 1;
volatile int b = 3;
-typedef int *intp;
+typedef int* intp;
extern int b;
static int c;
+
int foo()
{
int i = 1;
@@ -43,7 +44,7 @@ public:
//!ElaboratedTypeSpecifier
//%CPP
-class A *A;
+class A* A;
enum Status{ good, bad};
enum Status stat;
union D
@@ -52,7 +53,7 @@ union D
int y;
};
union D d;
-struct S *S;
+struct S* S;
//!EnumeratioSpecifier
//%CPP
diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterDeclarationTestSource.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterDeclarationTestSource.awts
index 4280ae8027e..14653f5cc88 100644
--- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterDeclarationTestSource.awts
+++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterDeclarationTestSource.awts
@@ -32,12 +32,14 @@ extern "C" typedef void FUNC();
//!NamespaceAlias
//%CPP
-namespace kurz = ziemlichlangernamespace;
+namespace kurz = somenamespace;
//!NamespaceDefinition
//%CPP
-namespace ziemlichlangernamespace
+namespace somenamespace
{
+
+
}
//!TemplateDeclaration
@@ -58,8 +60,9 @@ template class MyQueue;
template<> class MyQueue
{
std::vector data;
+
public:
- void Add(const double& );
+ void Add(const double&);
void Remove();
void Print();
};
@@ -92,9 +95,11 @@ using namespace B;
class A
{
public:
- int hallo();
+ int hello();
+
protected:
int b, c;
+
private:
int p;
};
@@ -104,7 +109,7 @@ private:
//Comment
int i = 2;
-//!typename qualfier
+//!Typename qualifier
//%CPP
-typename T::A *a6;
+typename T::A* a6;
diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterDeclaratorTestSource.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterDeclaratorTestSource.awts
index 0c541c209c8..97c1ba19ac8 100644
--- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterDeclaratorTestSource.awts
+++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterDeclaratorTestSource.awts
@@ -1,22 +1,23 @@
//!DeclaratorTest
//%CPP
int sd;
-int *ip;
+int* ip;
int hs = 1;
-char & c;
+char& c;
+
void foo()
{
struct B
{
int f();
};
- int (B::* pb)() = &B::f;
+ int (B::*pb)() = &B::f;
}
//!ArrayDeclaratorTest
//%CPP
-int *pi[3];
+int* pi[3];
int (*p3i)[3];
//!FieldDeclaratorTest
@@ -30,38 +31,39 @@ struct Bit
//%C
int foo();
int bar(int a, int b);
-int fun(const char *a, ...);
-int fun3(int i, const char *a, ...);
+int fun(const char* a, ...);
+int fun3(int i, const char* a, ...);
//!CPPStandardFunctionDeclaratorTest
//%CPP
int foo();
int bar(int a, int b);
-int fun(const char *a, ...);
-int fun2(const char *a ...);
-int fun3(int i, const char *a, ...);
+int fun(const char* a, ...);
+int fun2(const char* a ...);
+int fun3(int i, const char* a, ...);
//= ,... is synonymous with ...
int foo();
int bar(int a, int b);
-int fun(const char *a, ...);
-int fun2(const char *a, ...);
-int fun3(int i, const char *a, ...);
+int fun(const char* a, ...);
+int fun2(const char* a, ...);
+int fun3(int i, const char* a, ...);
//!CPPFunctionDeclaratorTest
//%CPP
-char & operator [](unsigned int);
+char& operator [](unsigned int);
class TestClass
{
int alpha;
TestClass(int a);
- virtual void pure() =0;
+ virtual void pure() = 0;
};
+
TestClass::TestClass(int a)
:alpha(a)
{
}
-void undefPar(const char *c) throw (int);
+void undefPar(const char* c) throw (int);
int getV() const;
int vol() volatile;
@@ -72,15 +74,17 @@ class C
{
int i;
double d;
+
public:
C(int, double);
};
+
C::C(int ii, double id)
try
:i(f(ii)), d(id)
{
}
-catch(...){
+catch (...){
}
@@ -94,7 +98,7 @@ int b, a;
//!ICPPASTDeclarator with nested declarator being a variable
//%C
-int *(*var[3]);
+int* (*var[3]);
//!ICPPASTDeclarator with nested declarator and redundant parentheses
//%C
@@ -108,8 +112,8 @@ class Foo
};
//!ICPPASTReferenceOperator rvalue reference
//%CPP
-int && foo(int && a)
+int&& foo(int&& a)
{
- char && b;
+ char&& b;
}
diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterExpressionTestSource.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterExpressionTestSource.awts
index 345c4453981..b2d0faa9f80 100644
--- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterExpressionTestSource.awts
+++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterExpressionTestSource.awts
@@ -4,10 +4,10 @@ int i = (int)'A';
//!CPPCastExpression
//%CPP
-TestClass *i = dynamic_cast(tc);
-TestClass *i = static_cast(tc);
-TestClass *i = reinterpret_cast(tc);
-TestClass *i = const_cast(tc);
+TestClass* i = dynamic_cast(tc);
+TestClass* i = static_cast(tc);
+TestClass* i = reinterpret_cast(tc);
+TestClass* i = const_cast(tc);
//!ArraySubscrition
//%C GNU
@@ -33,6 +33,7 @@ int i = 1 | x;
bool b = 1 && x;
bool b = 1 || x;
int i = x;
+
void foo()
{
i *= x;
@@ -131,7 +132,7 @@ string s = "abc";
//!CPPLiteralExpression
//%CPP
-TestClass *tc = this;
+TestClass* tc = this;
bool b = true;
bool b = false;
@@ -141,7 +142,7 @@ int i = ++a;
int i = --a;
int i = +a;
int i = -a;
-int *b = &a;
+int* b = &a;
int i = *b;
int i = ~b;
bool b = !false;
@@ -167,7 +168,7 @@ void rethrow()
int i = 1;
throw i;
}
- catch(int j){
+ catch (int j){
throw ;
}
}
@@ -191,7 +192,7 @@ void f()
//!CPPNewExpression
//%CPP
-TestClass *tc = new TestClass();
+TestClass* tc = new TestClass();
//!CPPSimpleTypeConstructorExpression
//%CPP
diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterNameTestSource.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterNameTestSource.awts
index 11081af1532..9117bb41bbc 100644
--- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterNameTestSource.awts
+++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterNameTestSource.awts
@@ -11,7 +11,7 @@ int TestClass::Hallo;
class Foo
{
public:
- char & operator [](unsigned int);
+ char& operator [](unsigned int);
};
//!ConversionName
diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterStatementTestSource.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterStatementTestSource.awts
index 0d1dfe14ba6..a322f51b197 100644
--- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterStatementTestSource.awts
+++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterStatementTestSource.awts
@@ -2,7 +2,7 @@
//%CPP
void foo()
{
- while(true){
+ while (true){
break;
}
}
@@ -41,7 +41,7 @@ void foo()
//%CPP
void foo()
{
- while(true){
+ while (true){
continue;
}
}
@@ -62,7 +62,7 @@ void foo()
{
do{
continue;
- } while(true);
+ } while (true);
}
@@ -79,13 +79,13 @@ void foo()
//%CPP
void foo()
{
- for(int i = 0;i < 1;++i){
+ for (int i = 0;i < 1;++i){
break;
}
- for(;;){
+ for (;;){
break;
}
- for(;int c = f();){
+ for (;int c = f();){
c++;
}
}
@@ -96,7 +96,7 @@ void foo()
void foo()
{
int i;
- for(i = 0;i < 1;++i){
+ for (i = 0;i < 1;++i){
}
}
@@ -115,12 +115,12 @@ int f()
int f()
{
int i = 0;
- if(i < 1){
+ if (i < 1){
++i;
}else{
--i;
}
- if(int c = f()){
+ if (int c = f()){
c++;
}
return i;
@@ -131,7 +131,7 @@ int f()
//%CPP
int g()
{
- if(10 > 5)
+ if (10 > 5)
return 1;
return 0;
@@ -141,7 +141,7 @@ int g()
//%C
int g()
{
- if(10 > 5)
+ if (10 > 5)
return 1;
return 0;
@@ -240,14 +240,14 @@ int foo(int a)
//%CPP
void foo()
{
- while(true){
+ while (true){
break;
}
}
void fa()
{
- while(int i = f()){
+ while (int i = f()){
++i;
break;
}
@@ -255,7 +255,7 @@ void fa()
void fb()
{
- while(true);
+ while (true);
}
@@ -263,7 +263,7 @@ void fb()
//%C
void foo()
{
- while(true){
+ while (true){
break;
}
}
@@ -279,10 +279,10 @@ int foo()
++i;
return i;
}
- catch(...){
+ catch (...){
}
}
- catch(...){
+ catch (...){
}
}
@@ -293,7 +293,7 @@ int foo()
int foo()
{
int i = 1;
- if( i == ZWO)
+ if (i == ZWO)
{
}
}
@@ -301,7 +301,7 @@ int foo()
int foo()
{
int i = 1;
- if( i == ZWO)
+ if (i == ZWO)
{
}
}
@@ -309,5 +309,5 @@ int foo()
//!ArrayDeclarationStatementTest
//%CPP
-string *newElements = new string[m_capacity];
+string* newElements = new string[m_capacity];
diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterTemplateTestSource.awts b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterTemplateTestSource.awts
index c11a70ff3ce..32ff7264c82 100644
--- a/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterTemplateTestSource.awts
+++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/ASTWriterTemplateTestSource.awts
@@ -1,10 +1,11 @@
//![temp.names] examples abschnitt 4/1
//%CPP
-T *p1 = p->template alloc<100>();
+T* p1 = p->template alloc<100>();
//![temp.names] examples abschnitt 4/2, didn't work cause of Bug# 164482
//%CPP
-template void f(T *p)
+template
+void f(T* p)
{
T::template adjust<100>();
}
diff --git a/core/org.eclipse.cdt.core.tests/resources/rewrite/CommentHandlingTestSource.rts b/core/org.eclipse.cdt.core.tests/resources/rewrite/CommentHandlingTestSource.rts
index 07dac1713bc..422b99ae02b 100644
--- a/core/org.eclipse.cdt.core.tests/resources/rewrite/CommentHandlingTestSource.rts
+++ b/core/org.eclipse.cdt.core.tests/resources/rewrite/CommentHandlingTestSource.rts
@@ -148,6 +148,7 @@ class Klasse0
public:
Klasse0(); //Comment
std::string toString();
+
private:
int i;
};
@@ -170,6 +171,7 @@ class Klasse0
public:
Klasse1();
std::string toString();
+
private:
int i;
};
@@ -182,6 +184,7 @@ class Klasse0
public:
Klasse1();
std::string toString();
+
private:
int i;
}; = //Comment1
@@ -2779,26 +2782,26 @@ int foo = bar; = //Zweiteilig
//#org.eclipse.cdt.core.parser.tests.rewrite.comenthandler.CommentHandlingTest
//@Klasse1.h
//TEST 1
-namespace ziemlichlangernamespace
+namespace somenamespace
{
//TEST 2
} //TEST 3
//=
=>leading
-namespace ziemlichlangernamespace
+namespace somenamespace
{
//TEST 2
} = //TEST 1
=>trailing
-namespace ziemlichlangernamespace
+namespace somenamespace
{
//TEST 2
} = //TEST 3
=>freestanding
-namespace ziemlichlangernamespace
+namespace somenamespace
{
//TEST 2
} = //TEST 2
@@ -2807,7 +2810,7 @@ namespace ziemlichlangernamespace
//!CommentRecognition215 - von ASTWriter NamesapceDefinition
//#org.eclipse.cdt.core.parser.tests.rewrite.comenthandler.CommentHandlingTest
//@Klasse1.h
-namespace ziemlichlangernamespace
+namespace somenamespace
{
//TEST
}
@@ -2822,7 +2825,7 @@ void doIt(){
=>trailing
=>freestanding
-namespace ziemlichlangernamespace
+namespace somenamespace
{
//TEST
} = //TEST
@@ -2830,7 +2833,7 @@ namespace ziemlichlangernamespace
//!CommentRecognition216 - von ASTWriter NamesapceDefinition
//#org.eclipse.cdt.core.parser.tests.rewrite.comenthandler.CommentHandlingTest
//@Klasse1.h
-namespace ziemlichlangernamespace
+namespace somenamespace
{
int i = 0;
//TEST
@@ -2846,7 +2849,7 @@ void doIt(){
=>trailing
=>freestanding
-namespace ziemlichlangernamespace
+namespace somenamespace
{
int i = 0;
//TEST
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTCompositeTypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTCompositeTypeSpecifier.java
index 1dd364ab631..c4c407f62a7 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTCompositeTypeSpecifier.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTCompositeTypeSpecifier.java
@@ -6,18 +6,17 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Doug Schaefer (IBM) - Initial API and implementation
+ * Doug Schaefer (IBM) - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.dom.ast;
/**
- * A composite type specifier represents a ocmposite structure (contains
- * declarations).
+ * A composite type specifier represents a composite structure (contains declarations).
*
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
*/
-public interface IASTCompositeTypeSpecifier extends IASTDeclSpecifier , IASTNameOwner, IASTDeclarationListOwner {
+public interface IASTCompositeTypeSpecifier extends IASTDeclSpecifier, IASTNameOwner, IASTDeclarationListOwner {
/**
* TYPE_NAME represents the relationship between an
@@ -101,5 +100,6 @@ public interface IASTCompositeTypeSpecifier extends IASTDeclSpecifier , IASTName
/**
* @since 5.1
*/
+ @Override
public IASTCompositeTypeSpecifier copy();
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTCompoundStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTCompoundStatement.java
index b2c555cf3d5..7a8b29c66b4 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTCompoundStatement.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTCompoundStatement.java
@@ -6,7 +6,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Doug Schaefer (IBM) - Initial API and implementation
+ * Doug Schaefer (IBM) - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.dom.ast;
@@ -52,10 +52,12 @@ public interface IASTCompoundStatement extends IASTStatement {
/**
* @since 5.1
*/
+ @Override
public IASTCompoundStatement copy();
/**
* @since 5.3
*/
+ @Override
public IASTCompoundStatement copy(CopyStyle style);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTDeclSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTDeclSpecifier.java
index 74c9d07096e..0a216e04747 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTDeclSpecifier.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTDeclSpecifier.java
@@ -6,8 +6,8 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Doug Schaefer (IBM) - Initial API and implementation
- * Markus Schorn (Wind River Systems)
+ * Doug Schaefer (IBM) - Initial API and implementation
+ * Markus Schorn (Wind River Systems)
*******************************************************************************/
package org.eclipse.cdt.core.dom.ast;
@@ -18,7 +18,6 @@ package org.eclipse.cdt.core.dom.ast;
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface IASTDeclSpecifier extends IASTNode {
-
/**
* No storage class specified.
*/
@@ -52,11 +51,13 @@ public interface IASTDeclSpecifier extends IASTNode {
/**
* @since 5.1
*/
+ @Override
public IASTDeclSpecifier copy();
/**
* @since 5.3
*/
+ @Override
public IASTDeclSpecifier copy(CopyStyle style);
/**
@@ -90,6 +91,4 @@ public interface IASTDeclSpecifier extends IASTNode {
*/
@Deprecated
public static final int sc_last = sc_register;
-
-
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTFunctionDefinition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTFunctionDefinition.java
index 99ea2f6955e..7cf4d873fe1 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTFunctionDefinition.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTFunctionDefinition.java
@@ -6,7 +6,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Doug Schaefer (IBM) - Initial API and implementation
+ * Doug Schaefer (IBM) - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.dom.ast;
@@ -103,10 +103,12 @@ public interface IASTFunctionDefinition extends IASTDeclaration {
/**
* @since 5.1
*/
+ @Override
public IASTFunctionDefinition copy();
/**
* @since 5.3
*/
+ @Override
public IASTFunctionDefinition copy(CopyStyle style);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTLiteralExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTLiteralExpression.java
index bbce9799508..86e6b25e52b 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTLiteralExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTLiteralExpression.java
@@ -1,13 +1,13 @@
/*******************************************************************************
- * Copyright (c) 2004, 2011 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
+ * Copyright (c) 2004, 2011 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:
- * Doug Schaefer (IBM) - Initial API and implementation
- * Markus Schorn (Wind River Systems)
+ * Contributors:
+ * Doug Schaefer (IBM) - Initial API and implementation
+ * Markus Schorn (Wind River Systems)
*******************************************************************************/
package org.eclipse.cdt.core.dom.ast;
@@ -18,7 +18,6 @@ package org.eclipse.cdt.core.dom.ast;
* @noextend This interface is not intended to be extended by clients.
*/
public interface IASTLiteralExpression extends IASTExpression {
-
/**
* An integer literal e.g. 5
*/
@@ -79,6 +78,7 @@ public interface IASTLiteralExpression extends IASTExpression {
* Returns the value of the literal as string.
* @since 5.1
*/
+ @Override
public String toString();
/**
@@ -95,11 +95,13 @@ public interface IASTLiteralExpression extends IASTExpression {
/**
* @since 5.1
*/
+ @Override
public IASTLiteralExpression copy();
/**
* @since 5.3
*/
+ @Override
public IASTLiteralExpression copy(CopyStyle style);
/**
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTTranslationUnit.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTTranslationUnit.java
index 3a7dfea8172..baab11bdb0d 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTTranslationUnit.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTTranslationUnit.java
@@ -64,6 +64,7 @@ public interface IASTTranslationUnit extends IASTDeclarationListOwner, IFileNomi
*
* @param declaration IASTDeclaration
*/
+ @Override
public void addDeclaration(IASTDeclaration declaration);
/**
@@ -324,6 +325,7 @@ public interface IASTTranslationUnit extends IASTDeclarationListOwner, IFileNomi
* @noreference This method is not intended to be referenced by clients.
* @since 5.1
*/
+ @Override
public IASTTranslationUnit copy();
/**
@@ -335,6 +337,7 @@ public interface IASTTranslationUnit extends IASTDeclarationListOwner, IFileNomi
* @noreference This method is not intended to be referenced by clients.
* @since 5.3
*/
+ @Override
public IASTTranslationUnit copy(CopyStyle style);
/**
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTCompositeTypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTCompositeTypeSpecifier.java
index b41944e68f5..96ab919ceca 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTCompositeTypeSpecifier.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTCompositeTypeSpecifier.java
@@ -84,11 +84,13 @@ public interface ICPPASTCompositeTypeSpecifier extends IASTCompositeTypeSpecifie
/**
* @since 5.1
*/
+ @Override
public ICPPASTBaseSpecifier copy();
/**
* @since 5.3
*/
+ @Override
public ICPPASTBaseSpecifier copy(CopyStyle style);
/**
@@ -125,15 +127,18 @@ public interface ICPPASTCompositeTypeSpecifier extends IASTCompositeTypeSpecifie
/**
* @since 5.1
*/
+ @Override
public ICPPClassScope getScope();
/**
* @since 5.1
*/
+ @Override
public ICPPASTCompositeTypeSpecifier copy();
/**
* @since 5.3
*/
+ @Override
public ICPPASTCompositeTypeSpecifier copy(CopyStyle style);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTParameterDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTParameterDeclaration.java
index e302b4e2e19..b08da127cb6 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTParameterDeclaration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPASTParameterDeclaration.java
@@ -6,8 +6,8 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * John Camelon (IBM) - Initial API and implementation
- * Markus Schorn (Wind River Systems)
+ * John Camelon (IBM) - Initial API and implementation
+ * Markus Schorn (Wind River Systems)
*******************************************************************************/
package org.eclipse.cdt.core.dom.ast.cpp;
@@ -18,7 +18,6 @@ import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface ICPPASTParameterDeclaration extends ICPPASTTemplateParameter, IASTParameterDeclaration {
-
/**
* @since 5.2
*/
@@ -27,15 +26,18 @@ public interface ICPPASTParameterDeclaration extends ICPPASTTemplateParameter, I
/**
* @since 5.1
*/
+ @Override
public ICPPASTParameterDeclaration copy();
/**
* @since 5.3
*/
+ @Override
public ICPPASTParameterDeclaration copy(CopyStyle style);
/**
* @since 5.2
*/
+ @Override
public ICPPASTDeclarator getDeclarator();
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPClassType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPClassType.java
index c12b248514f..16bfa987063 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPClassType.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPClassType.java
@@ -33,19 +33,20 @@ public interface ICPPClassType extends ICompositeType, ICPPBinding {
public ICPPBase[] getBases();
/**
- * Get fields is restated here just to point out that this method returns a
- * list of ICPPField objects representing all fields, declared or inherited.
+ * Get fields is restated here just to point out that this method returns a list of ICPPField
+ * objects representing all fields, declared or inherited.
*/
+ @Override
public IField[] getFields();
/**
- * findField is restated here to point out that this method looks through
- * the inheritance tree of this class while looking for a field with the
- * given name If no field is found, null is returned, if the name is found
- * to be ambiguous a IProblemBinding is returned.
+ * findField is restated here to point out that this method looks through the inheritance tree
+ * of this class while looking for a field with the given name If no field is found, null is
+ * returned, if the name is found to be ambiguous a IProblemBinding is returned.
*
* @param name
*/
+ @Override
public IField findField(String name);
/**
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/GPPLanguage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/GPPLanguage.java
index b4350e2666a..ce06349cc78 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/GPPLanguage.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/GPPLanguage.java
@@ -55,10 +55,12 @@ public class GPPLanguage extends AbstractCLikeLanguage {
return super.getAdapter(adapter);
}
+ @Override
public String getId() {
return ID;
}
+ @Override
public int getLinkageID() {
return ILinkage.CPP_LINKAGE_ID;
}
@@ -68,6 +70,9 @@ public class GPPLanguage extends AbstractCLikeLanguage {
return CPP_GNU_SCANNER_EXTENSION;
}
+ /**
+ * @since 5.4
+ */
@Override
protected IScannerExtensionConfiguration getScannerExtensionConfiguration(IScannerInfo info) {
return GPPScannerExtensionConfiguration.getInstance(info);
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/ASTRewrite.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/ASTRewrite.java
index ec1ee98719e..ee2b2e90f12 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/ASTRewrite.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/ASTRewrite.java
@@ -202,8 +202,8 @@ public final class ASTRewrite {
* changes.
*
*
- * @return Change object describing the changes to the
- * document corresponding to the changes recorded by this rewriter
+ * @return Change object describing the changes to the document corresponding to the changes
+ * recorded by this rewriter
* @since 5.0
*/
public Change rewriteAST() {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/DeclarationGenerator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/DeclarationGenerator.java
index ecc6fb867c9..c59986d92d3 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/DeclarationGenerator.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/DeclarationGenerator.java
@@ -6,9 +6,8 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Tomasz Wesolowski - initial API and implementation
+ * Tomasz Wesolowski - initial API and implementation
*******************************************************************************/
-
package org.eclipse.cdt.core.dom.rewrite;
import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
@@ -18,8 +17,8 @@ import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.internal.core.dom.rewrite.DeclarationGeneratorImpl;
/**
- *
- * This class handles the creation of {@link IASTDeclarator}s and {@link IASTDeclSpecifier}s basing on given type.
+ * This class handles the creation of {@link IASTDeclarator}s and {@link IASTDeclSpecifier}s
+ * for a given type.
*
* @author Tomasz Wesolowski
* @noextend This interface is not intended to be extended by clients.
@@ -45,5 +44,4 @@ public abstract class DeclarationGenerator {
* @return the generated declarator
*/
public abstract IASTDeclarator createDeclaratorFromType(IType type, char[] name);
-
}
\ No newline at end of file
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/TypeHelper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/TypeHelper.java
new file mode 100644
index 00000000000..d3c7d53c6e7
--- /dev/null
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/TypeHelper.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Google, Inc 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:
+ * Sergey Prigogin (Google) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.dom.rewrite;
+
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.dom.ast.ICompositeType;
+import org.eclipse.cdt.core.dom.ast.IType;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
+import org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit;
+import org.eclipse.cdt.internal.core.dom.parser.SizeofCalculator;
+import org.eclipse.cdt.internal.core.dom.parser.SizeofCalculator.SizeAndAlignment;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ClassTypeHelper;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil;
+
+/**
+ * A collection of static methods related to types.
+ * @since 5.4
+ */
+public class TypeHelper {
+
+ // Do not instantiate - all methods are static.
+ private TypeHelper() {
+ }
+
+ /**
+ * Returns true if it is preferable to pass parameters of the given type to methods
+ * by reference, not by value. A parameter should be passed by reference if it is
+ * a class, struct, or union, and either has a nontrivial
+ * copy constructor or nontrivial destructor, or is larger than pointer.
+ *
+ * @param type the type in question.
+ * @param ast the AST used as a context.
+ * @return true is passing by reverence is preferable.
+ */
+ public static boolean shouldBePassedByReference(IType type, IASTTranslationUnit ast) {
+ type = SemanticUtil.getNestedType(type, SemanticUtil.CVTYPE | SemanticUtil.TDEF);
+ if (type instanceof ICompositeType) {
+ if (type instanceof ICPPClassType) {
+ ICPPClassType classType = ((ICPPClassType) type);
+ if (!ClassTypeHelper.hasTrivialCopyCtor(classType) ||
+ !ClassTypeHelper.hasTrivialDestructor(classType)) {
+ return true;
+ }
+ }
+ SizeofCalculator calc = ((ASTTranslationUnit) ast).getSizeofCalculator();
+ SizeAndAlignment sizeofPointer = calc.sizeAndAlignmentOfPointer();
+ if (sizeofPointer == null)
+ return true;
+ SizeAndAlignment sizeofType = calc.sizeAndAlignment(type);
+ if (sizeofType == null || sizeofType.size > sizeofPointer.size)
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousBinaryVsCastExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousBinaryVsCastExpression.java
index 721950391e1..91b92405adf 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousBinaryVsCastExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousBinaryVsCastExpression.java
@@ -40,15 +40,18 @@ public abstract class ASTAmbiguousBinaryVsCastExpression extends ASTAmbiguousNod
fCastExpression= castExpression;
}
- public final IASTExpression copy() {
+ @Override
+ public final IASTExpression copy() {
throw new UnsupportedOperationException();
}
+ @Override
public final IASTExpression copy(CopyStyle style) {
throw new UnsupportedOperationException();
}
- public final void addExpression(IASTExpression e) {
+ @Override
+ public final void addExpression(IASTExpression e) {
throw new UnsupportedOperationException();
}
@@ -57,12 +60,13 @@ public abstract class ASTAmbiguousBinaryVsCastExpression extends ASTAmbiguousNod
return getExpressions();
}
+ @Override
public IASTExpression[] getExpressions() {
return new IASTExpression[] {fBinaryExpression, fCastExpression};
}
@Override
- public final IASTNode resolveAmbiguity(ASTVisitor visitor) {
+ protected final IASTNode doResolveAmbiguity(ASTVisitor visitor) {
final IASTAmbiguityParent owner= (IASTAmbiguityParent) getParent();
IASTNode nodeToReplace= this;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousCastVsFunctionCallExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousCastVsFunctionCallExpression.java
index dcc060262b2..873e540bd39 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousCastVsFunctionCallExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousCastVsFunctionCallExpression.java
@@ -49,24 +49,28 @@ public abstract class ASTAmbiguousCastVsFunctionCallExpression extends ASTAmbigu
return getExpressions();
}
- public final IASTExpression copy() {
+ @Override
+ public final IASTExpression copy() {
throw new UnsupportedOperationException();
}
+ @Override
public final IASTExpression copy(CopyStyle style) {
throw new UnsupportedOperationException();
}
- public void addExpression(IASTExpression e) {
+ @Override
+ public void addExpression(IASTExpression e) {
throw new UnsupportedOperationException();
}
+ @Override
public IASTExpression[] getExpressions() {
return new IASTExpression[] {fCastExpression, fFunctionCallExpression};
}
@Override
- public final IASTNode resolveAmbiguity(ASTVisitor visitor) {
+ protected final IASTNode doResolveAmbiguity(ASTVisitor visitor) {
final IASTAmbiguityParent owner= (IASTAmbiguityParent) getParent();
IASTNode nodeToReplace= this;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousNode.java
index 772fd3e70c8..3f56c3c2d08 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousNode.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/ASTAmbiguousNode.java
@@ -49,6 +49,8 @@ public abstract class ASTAmbiguousNode extends ASTNode {
return names;
}
}
+
+ private IASTNode fResolution;
/**
* Return the alternative nodes for this ambiguity.
@@ -73,7 +75,11 @@ public abstract class ASTAmbiguousNode extends ASTNode {
protected void afterResolution(ASTVisitor resolver, IASTNode best) {
}
- public IASTNode resolveAmbiguity(ASTVisitor resolver) {
+ public IASTNode resolveAmbiguity(ASTVisitor resolver) {
+ return fResolution= doResolveAmbiguity(resolver);
+ }
+
+ protected IASTNode doResolveAmbiguity(ASTVisitor resolver) {
beforeResolution();
final IASTAmbiguityParent owner= (IASTAmbiguityParent) getParent();
IASTNode nodeToReplace= this;
@@ -85,23 +91,23 @@ public abstract class ASTAmbiguousNode extends ASTNode {
for (IASTNode alternative : alternatives) {
// Setup the ast to use the alternative
owner.replace(nodeToReplace, alternative);
- nodeToReplace= alternative;
beforeAlternative(alternative);
+
+ // Handle nested ambiguities
+ alternative= resolveNestedAmbiguities(alternative, resolver);
+ nodeToReplace= alternative;
- // handle nested ambiguities first, otherwise we cannot visit the alternative
- alternative.accept(resolver);
-
- // find nested names
+ // Find nested names
final NameCollector nameCollector= new NameCollector();
alternative.accept(nameCollector);
final IASTName[] names= nameCollector.getNames();
- // resolve names and count issues
+ // Resolve names and count issues
int issues= 0;
for (IASTName name : names) {
try {
- // avoid resolution of parameters (can always be resolved),
+ // Avoid resolution of parameters (can always be resolved),
// it can triggers resolution of declaration it belongs to,
// while the declarator is still ambiguous. Could be solved by introducing an
// intermediate binding for parameters, similar to template parameters.
@@ -133,7 +139,7 @@ public abstract class ASTAmbiguousNode extends ASTNode {
}
}
- // switch back to the best alternative, if necessary.
+ // Switch back to the best alternative, if necessary.
if (nodeToReplace != bestAlternative) {
owner.replace(nodeToReplace, bestAlternative);
}
@@ -141,7 +147,14 @@ public abstract class ASTAmbiguousNode extends ASTNode {
return bestAlternative;
}
- public final IType getExpressionType() {
+ protected IASTNode resolveNestedAmbiguities(IASTNode alternative, ASTVisitor resolver) {
+ alternative.accept(resolver);
+ if (alternative instanceof ASTAmbiguousNode)
+ return ((ASTAmbiguousNode) alternative).fResolution;
+ return alternative;
+ }
+
+ public final IType getExpressionType() {
throw new UnsupportedOperationException();
}
public final ValueCategory getValueCategory() {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/SizeofCalculator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/SizeofCalculator.java
index 8499a973a28..6d05a310554 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/SizeofCalculator.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/SizeofCalculator.java
@@ -34,7 +34,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPReferenceType;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil;
/**
- * Calculator of in-memory size and of types.
+ * Calculator of in-memory size and alignment of types.
*/
public class SizeofCalculator {
/** Size and alignment pair */
@@ -95,16 +95,16 @@ public class SizeofCalculator {
sizeof_bool = getSize(sizeofMacros, "__SIZEOF_BOOL__", maxAlignment); //$NON-NLS-1$
sizeof_wchar_t = getSize(sizeofMacros, "__SIZEOF_WCHAR_T__", maxAlignment); //$NON-NLS-1$
sizeof_float = getSize(sizeofMacros, "__SIZEOF_FLOAT__", maxAlignment); //$NON-NLS-1$
- sizeof_complex_float = getDoubleSize(sizeof_float);
+ sizeof_complex_float = getSizeOfPair(sizeof_float);
sizeof_double = getSize(sizeofMacros, "__SIZEOF_DOUBLE__", maxAlignment); //$NON-NLS-1$
- sizeof_complex_double = getDoubleSize(sizeof_double);
+ sizeof_complex_double = getSizeOfPair(sizeof_double);
sizeof_long_double = getSize(sizeofMacros, "__SIZEOF_LONG_DOUBLE__", maxAlignment); //$NON-NLS-1$
- sizeof_complex_long_double = getDoubleSize(sizeof_long_double);
+ sizeof_complex_long_double = getSizeOfPair(sizeof_long_double);
}
/**
* Calculates size and alignment for the given type.
- * @param type
+ * @param type the type to get size and alignment for.
* @return size and alignment, or null if could not be calculated.
*/
public SizeAndAlignment sizeAndAlignment(IType type) {
@@ -130,6 +130,14 @@ public class SizeofCalculator {
return null;
}
+ /**
+ * Returns size and alignment of pointer types.
+ * @return size and alignment of pointer types, or null if unknown.
+ */
+ public SizeAndAlignment sizeAndAlignmentOfPointer() {
+ return sizeof_pointer;
+ }
+
private SizeAndAlignment sizeAndAlignment(IBasicType type) {
Kind kind = type.getKind();
switch (kind) {
@@ -262,7 +270,7 @@ public class SizeofCalculator {
}
}
- private SizeAndAlignment getDoubleSize(SizeAndAlignment sizeAndAlignment) {
+ private SizeAndAlignment getSizeOfPair(SizeAndAlignment sizeAndAlignment) {
return sizeAndAlignment == null ?
null : new SizeAndAlignment(sizeAndAlignment.size * 2, sizeAndAlignment.alignment);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/Value.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/Value.java
index 72fc9fc330c..5d212fc4ee1 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/Value.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/Value.java
@@ -91,11 +91,12 @@ public class Value implements IValue {
fResolvedUnknown= resolvedUnknowns;
fMap= map;
}
+
public void nextSeperator() throws UnknownValueException {
final char[] expression = fExpression;
final int len = expression.length;
int idx = pos;
- while(idx < len) {
+ while (idx < len) {
if (expression[idx++] == SEPARATOR)
break;
}
@@ -105,7 +106,7 @@ public class Value implements IValue {
private static class UnknownValueException extends Exception {}
private static UnknownValueException UNKNOWN_EX= new UnknownValueException();
- private static int sUnique=0;
+ private static int sUnique= 0;
private final char[] fExpression;
private final ICPPUnknownBinding[] fUnknownBindings;
@@ -404,7 +405,8 @@ public class Value implements IValue {
* Returns a {@code Number} for numerical values or a {@code String}, otherwise.
* @throws UnknownValueException
*/
- private static Object evaluate(IASTExpression e, Map unknownSigs, List unknowns, int maxdepth) throws UnknownValueException {
+ private static Object evaluate(IASTExpression e, Map unknownSigs,
+ List unknowns, int maxdepth) throws UnknownValueException {
if (maxdepth < 0 || e == null)
throw UNKNOWN_EX;
@@ -437,7 +439,8 @@ public class Value implements IValue {
final IASTExpression pe = cexpr.getPositiveResultExpression();
Object po= pe == null ? o : evaluate(pe, unknownSigs, unknowns, maxdepth);
Object neg= evaluate(cexpr.getNegativeResultExpression(), unknownSigs, unknowns, maxdepth);
- return "" + CONDITIONAL_CHAR + SEPARATOR + o.toString() + SEPARATOR + po.toString() + SEPARATOR + neg.toString(); //$NON-NLS-1$
+ return "" + CONDITIONAL_CHAR + SEPARATOR + o.toString() + SEPARATOR + po.toString() + //$NON-NLS-1$
+ SEPARATOR + neg.toString();
}
if (e instanceof IASTIdExpression) {
IBinding b= ((IASTIdExpression) e).getName().resolvePreBinding();
@@ -487,7 +490,8 @@ public class Value implements IValue {
/**
* Extract a value off a binding.
*/
- private static Object evaluateBinding(IBinding b, Map unknownSigs, List unknowns, int maxdepth) throws UnknownValueException {
+ private static Object evaluateBinding(IBinding b, Map unknownSigs,
+ List unknowns, int maxdepth) throws UnknownValueException {
if (b instanceof IType) {
throw UNKNOWN_EX;
}
@@ -514,7 +518,8 @@ public class Value implements IValue {
throw UNKNOWN_EX;
}
- private static Object createReference(ICPPUnknownBinding unknown, Map unknownSigs, List unknowns) {
+ private static Object createReference(ICPPUnknownBinding unknown,
+ Map unknownSigs, List unknowns) {
String sig= getSignatureForUnknown(unknown);
Integer idx= unknownSigs.get(sig);
if (idx == null) {
@@ -525,7 +530,8 @@ public class Value implements IValue {
return "" + REFERENCE_CHAR + idx.toString(); //$NON-NLS-1$
}
- private static Object evaluateValue(IValue cv, Map unknownSigs, List unknowns) throws UnknownValueException {
+ private static Object evaluateValue(IValue cv, Map unknownSigs,
+ List unknowns) throws UnknownValueException {
if (cv == Value.UNKNOWN)
throw UNKNOWN_EX;
@@ -568,7 +574,9 @@ public class Value implements IValue {
return buf.toString();
}
- private static Object evaluateUnaryExpression(IASTUnaryExpression ue, Map unknownSigs, List unknowns, int maxdepth) throws UnknownValueException {
+ private static Object evaluateUnaryExpression(IASTUnaryExpression ue,
+ Map unknownSigs, List unknowns, int maxdepth)
+ throws UnknownValueException {
final int unaryOp= ue.getOperator();
if (unaryOp == IASTUnaryExpression.op_sizeof) {
@@ -630,7 +638,8 @@ public class Value implements IValue {
}
private static Object evaluateBinaryExpression(IASTBinaryExpression be,
- Map unknownSigs, List unknowns, int maxdepth) throws UnknownValueException {
+ Map unknownSigs, List unknowns, int maxdepth)
+ throws UnknownValueException {
final Object o1= evaluate(be.getOperand1(), unknownSigs, unknowns, maxdepth);
final Object o2= evaluate(be.getOperand2(), unknownSigs, unknowns, maxdepth);
@@ -638,7 +647,8 @@ public class Value implements IValue {
return combineBinary(op, o1, o2);
}
- private static Object combineBinary(final int op, final Object o1, final Object o2) throws UnknownValueException {
+ private static Object combineBinary(final int op, final Object o1, final Object o2)
+ throws UnknownValueException {
if (o1 instanceof Number && o2 instanceof Number) {
long v1= ((Number) o1).longValue();
long v2= ((Number) o2).longValue();
@@ -725,7 +735,8 @@ public class Value implements IValue {
return "" + BINARY_OP_CHAR + op + SEPARATOR + o1.toString() + SEPARATOR + o2.toString(); //$NON-NLS-1$
}
- public static IValue reevaluate(IValue val, int packOffset, IBinding[] resolvedUnknowns, ICPPTemplateParameterMap map, int maxdepth) {
+ public static IValue reevaluate(IValue val, int packOffset, IBinding[] resolvedUnknowns,
+ ICPPTemplateParameterMap map, int maxdepth) {
try {
Map unknownSigs= new HashMap();
List unknown= new ArrayList();
@@ -787,7 +798,8 @@ public class Value implements IValue {
}
return po;
}
- return "" + CONDITIONAL_CHAR + SEPARATOR + cond.toString() + SEPARATOR + po.toString() + SEPARATOR + neg.toString(); //$NON-NLS-1$
+ return "" + CONDITIONAL_CHAR + SEPARATOR + cond.toString() + SEPARATOR + //$NON-NLS-1$
+ po.toString() + SEPARATOR + neg.toString();
case REFERENCE_CHAR:
int num= parseNonNegative(buf, idx + 1);
final IBinding[] resolvedUnknowns= reeval.fResolvedUnknown;
@@ -889,7 +901,7 @@ public class Value implements IValue {
* Parses a long.
*/
private static long parseLong(char[] value, int offset) throws UnknownValueException {
- final long maxvalue= Long.MAX_VALUE/10;
+ final long maxvalue= Long.MAX_VALUE / 10;
final int len= value.length;
boolean negative= false;
long result = 0;
@@ -920,7 +932,7 @@ public class Value implements IValue {
* Parses a long, returns null if not possible
*/
private static Long parseLong(char[] value) {
- final long maxvalue= Long.MAX_VALUE/10;
+ final long maxvalue= Long.MAX_VALUE / 10;
final int len= value.length;
boolean negative= false;
long result = 0;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousSimpleDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousSimpleDeclaration.java
index 27e7424a91c..c62e6eede27 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousSimpleDeclaration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTAmbiguousSimpleDeclaration.java
@@ -56,39 +56,45 @@ public class CASTAmbiguousSimpleDeclaration extends ASTAmbiguousNode implements
return new IASTNode[] {fSimpleDecl, fAltDeclSpec, fAltDtor};
}
+ @Override
public IASTSimpleDeclaration copy() {
throw new UnsupportedOperationException();
}
+ @Override
public IASTSimpleDeclaration copy(CopyStyle style) {
throw new UnsupportedOperationException();
}
+ @Override
public void addDeclarator(IASTDeclarator declarator) {
fSimpleDecl.addDeclarator(declarator);
}
+ @Override
public IASTDeclSpecifier getDeclSpecifier() {
return fSimpleDecl.getDeclSpecifier();
}
+ @Override
public IASTDeclarator[] getDeclarators() {
return fSimpleDecl.getDeclarators();
}
+ @Override
public void setDeclSpecifier(IASTDeclSpecifier declSpec) {
fSimpleDecl.setDeclSpecifier(declSpec);
}
@Override
- public final IASTNode resolveAmbiguity(ASTVisitor visitor) {
+ protected final IASTNode doResolveAmbiguity(ASTVisitor resolver) {
final IASTAmbiguityParent owner= (IASTAmbiguityParent) getParent();
IASTNode nodeToReplace= this;
// handle nested ambiguities first
owner.replace(nodeToReplace, fSimpleDecl);
IASTDeclSpecifier declSpec= fSimpleDecl.getDeclSpecifier();
- declSpec.accept(visitor);
+ declSpec.accept(resolver);
// find nested names
@@ -118,7 +124,7 @@ public class CASTAmbiguousSimpleDeclaration extends ASTAmbiguousNode implements
}
// resolve further nested ambiguities
- fSimpleDecl.accept(visitor);
+ fSimpleDecl.accept(resolver);
return fSimpleDecl;
}
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousParameterDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousParameterDeclaration.java
index f58d3afbb9b..81b864a9bfc 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousParameterDeclaration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousParameterDeclaration.java
@@ -43,13 +43,14 @@ public class CPPASTAmbiguousParameterDeclaration extends ASTAmbiguousNode implem
fParameterDecl= decl;
}
+ @Override
public void addParameterDeclaration(IASTParameterDeclaration d) {
assert false;
}
@Override
- public IASTNode resolveAmbiguity(ASTVisitor resolver) {
+ protected final IASTNode doResolveAmbiguity(ASTVisitor resolver) {
final IASTAmbiguityParent owner= (IASTAmbiguityParent) getParent();
// Setup the ast to use the alternative
@@ -79,6 +80,7 @@ public class CPPASTAmbiguousParameterDeclaration extends ASTAmbiguousNode implem
}
}
+ @Override
public IASTParameterDeclaration[] getParameterDeclarations() {
return new IASTParameterDeclaration[] {fParameterDecl};
}
@@ -88,32 +90,39 @@ public class CPPASTAmbiguousParameterDeclaration extends ASTAmbiguousNode implem
return getParameterDeclarations();
}
+ @Override
public IASTDeclSpecifier getDeclSpecifier() {
return fParameterDecl.getDeclSpecifier();
}
+ @Override
public ICPPASTDeclarator getDeclarator() {
return fParameterDecl.getDeclarator();
}
+ @Override
public void setDeclSpecifier(IASTDeclSpecifier declSpec) {
Assert.isLegal(false);
}
+ @Override
public void setDeclarator(IASTDeclarator declarator) {
Assert.isLegal(false);
}
+ @Override
public ICPPASTParameterDeclaration copy() {
Assert.isLegal(false);
return null;
}
+ @Override
public ICPPASTParameterDeclaration copy(CopyStyle style) {
Assert.isLegal(false);
return null;
}
+ @Override
public boolean isParameterPack() {
Assert.isLegal(false);
return true;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousSimpleDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousSimpleDeclaration.java
index a546fb979d2..483a0652c50 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousSimpleDeclaration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguousSimpleDeclaration.java
@@ -58,39 +58,45 @@ public class CPPASTAmbiguousSimpleDeclaration extends ASTAmbiguousNode implement
return new IASTNode[] {fSimpleDecl, fAltDeclSpec, fAltDtor};
}
+ @Override
public IASTSimpleDeclaration copy() {
throw new UnsupportedOperationException();
}
+ @Override
public IASTSimpleDeclaration copy(CopyStyle style) {
throw new UnsupportedOperationException();
}
+ @Override
public void addDeclarator(IASTDeclarator declarator) {
fSimpleDecl.addDeclarator(declarator);
}
+ @Override
public IASTDeclSpecifier getDeclSpecifier() {
return fSimpleDecl.getDeclSpecifier();
}
+ @Override
public IASTDeclarator[] getDeclarators() {
return fSimpleDecl.getDeclarators();
}
+ @Override
public void setDeclSpecifier(IASTDeclSpecifier declSpec) {
fSimpleDecl.setDeclSpecifier(declSpec);
}
@Override
- public final IASTNode resolveAmbiguity(ASTVisitor visitor) {
+ protected final IASTNode doResolveAmbiguity(ASTVisitor resolver) {
final IASTAmbiguityParent owner= (IASTAmbiguityParent) getParent();
IASTNode nodeToReplace= this;
// handle nested ambiguities first
owner.replace(nodeToReplace, fSimpleDecl);
IASTDeclarator dtor= fSimpleDecl.getDeclarators()[0];
- dtor.accept(visitor);
+ dtor.accept(resolver);
// find nested names
@@ -120,7 +126,7 @@ public class CPPASTAmbiguousSimpleDeclaration extends ASTAmbiguousNode implement
}
// resolve further nested ambiguities
- fSimpleDecl.accept(visitor);
+ fSimpleDecl.accept(resolver);
return fSimpleDecl;
}
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCastExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCastExpression.java
index dd0ec944973..9d4f2b54089 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCastExpression.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCastExpression.java
@@ -44,10 +44,12 @@ public class CPPASTCastExpression extends ASTNode implements ICPPASTCastExpressi
setTypeId(typeId);
}
+ @Override
public CPPASTCastExpression copy() {
return copy(CopyStyle.withoutLocations);
}
+ @Override
public CPPASTCastExpression copy(CopyStyle style) {
CPPASTCastExpression copy = new CPPASTCastExpression();
copy.setOperator(getOperator());
@@ -61,6 +63,7 @@ public class CPPASTCastExpression extends ASTNode implements ICPPASTCastExpressi
return copy;
}
+ @Override
public void setTypeId(IASTTypeId typeId) {
assertNotFrozen();
this.typeId = typeId;
@@ -70,24 +73,29 @@ public class CPPASTCastExpression extends ASTNode implements ICPPASTCastExpressi
}
}
- public IASTTypeId getTypeId() {
+ @Override
+ public IASTTypeId getTypeId() {
return typeId;
}
+ @Override
public int getOperator() {
return op;
}
- public void setOperator(int operator) {
+ @Override
+ public void setOperator(int operator) {
assertNotFrozen();
op = operator;
}
- public IASTExpression getOperand() {
+ @Override
+ public IASTExpression getOperand() {
return operand;
}
- public void setOperand(IASTExpression expression) {
+ @Override
+ public void setOperand(IASTExpression expression) {
assertNotFrozen();
operand = expression;
if (expression != null) {
@@ -120,7 +128,8 @@ public class CPPASTCastExpression extends ASTNode implements ICPPASTCastExpressi
return true;
}
- public void replace(IASTNode child, IASTNode other) {
+ @Override
+ public void replace(IASTNode child, IASTNode other) {
if (child == operand) {
other.setPropertyInParent(child.getPropertyInParent());
other.setParent(child.getParent());
@@ -128,6 +137,7 @@ public class CPPASTCastExpression extends ASTNode implements ICPPASTCastExpressi
}
}
+ @Override
public IType getExpressionType() {
if (fType == null) {
IType t= CPPVisitor.createType(typeId.getAbstractDeclarator());
@@ -137,6 +147,7 @@ public class CPPASTCastExpression extends ASTNode implements ICPPASTCastExpressi
return fType;
}
+ @Override
public ValueCategory getValueCategory() {
if (fValueCategory == null) {
getExpressionType(); // as a side effect fValueCategory is computed
@@ -144,6 +155,7 @@ public class CPPASTCastExpression extends ASTNode implements ICPPASTCastExpressi
return fValueCategory;
}
+ @Override
public boolean isLValue() {
return getValueCategory() == LVALUE;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompoundStatement.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompoundStatement.java
index 0ffd9be7e1f..4eb7e05307f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompoundStatement.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTCompoundStatement.java
@@ -6,7 +6,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * IBM - Initial API and implementation
+ * IBM - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser.cpp;
@@ -23,17 +23,17 @@ import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguityParent;
/**
* @author jcamelon
*/
-public class CPPASTCompoundStatement extends ASTNode implements
- IASTCompoundStatement, IASTAmbiguityParent {
+public class CPPASTCompoundStatement extends ASTNode
+ implements IASTCompoundStatement, IASTAmbiguityParent {
+ private IASTStatement[] statements = new IASTStatement[2];
+ private ICPPScope scope;
- private IASTStatement [] statements = new IASTStatement[2];
- private ICPPScope scope = null;
-
-
- public CPPASTCompoundStatement copy() {
+ @Override
+ public CPPASTCompoundStatement copy() {
return copy(CopyStyle.withoutLocations);
}
+ @Override
public CPPASTCompoundStatement copy(CopyStyle style) {
CPPASTCompoundStatement copy = new CPPASTCompoundStatement();
for (IASTStatement statement : getStatements())
@@ -45,57 +45,61 @@ public class CPPASTCompoundStatement extends ASTNode implements
return copy;
}
- public IASTStatement[] getStatements() {
- if( statements == null ) return IASTStatement.EMPTY_STATEMENT_ARRAY;
- return (IASTStatement[]) ArrayUtil.trim( IASTStatement.class, statements );
+ @Override
+ public IASTStatement[] getStatements() {
+ if (statements == null)
+ return IASTStatement.EMPTY_STATEMENT_ARRAY;
+ return (IASTStatement[]) ArrayUtil.trim(IASTStatement.class, statements);
}
- public void addStatement(IASTStatement statement) {
+ @Override
+ public void addStatement(IASTStatement statement) {
assertNotFrozen();
- statements = (IASTStatement[]) ArrayUtil.append( IASTStatement.class, statements, statement );
+ statements = (IASTStatement[]) ArrayUtil.append(IASTStatement.class, statements, statement);
if (statement != null) {
statement.setParent(this);
statement.setPropertyInParent(NESTED_STATEMENT);
}
}
- public IScope getScope() {
- if( scope == null )
- scope = new CPPBlockScope( this );
+ @Override
+ public IScope getScope() {
+ if (scope == null)
+ scope = new CPPBlockScope(this);
return scope;
}
@Override
- public boolean accept( ASTVisitor action ){
- if( action.shouldVisitStatements ){
- switch( action.visit( this ) ){
- case ASTVisitor.PROCESS_ABORT : return false;
- case ASTVisitor.PROCESS_SKIP : return true;
- default : break;
+ public boolean accept(ASTVisitor action) {
+ if (action.shouldVisitStatements) {
+ switch (action.visit(this)) {
+ case ASTVisitor.PROCESS_ABORT: return false;
+ case ASTVisitor.PROCESS_SKIP: return true;
+ default: break;
}
}
- IASTStatement [] s = getStatements();
- for ( int i = 0; i < s.length; i++ ) {
- if( !s[i].accept( action ) ) return false;
+ IASTStatement[] s = getStatements();
+ for (int i = 0; i < s.length; i++) {
+ if (!s[i].accept(action))
+ return false;
}
- if( action.shouldVisitStatements ){
- switch( action.leave( this ) ){
- case ASTVisitor.PROCESS_ABORT : return false;
- case ASTVisitor.PROCESS_SKIP : return true;
- default : break;
+ if (action.shouldVisitStatements) {
+ switch (action.leave(this)) {
+ case ASTVisitor.PROCESS_ABORT: return false;
+ case ASTVisitor.PROCESS_SKIP: return true;
+ default: break;
}
}
return true;
}
- public void replace(IASTNode child, IASTNode other) {
- if( statements == null ) return;
- for( int i = 0; i < statements.length; ++i )
- {
- if( statements[i] == child )
- {
- other.setParent( statements[i].getParent() );
- other.setPropertyInParent( statements[i].getPropertyInParent() );
+ @Override
+ public void replace(IASTNode child, IASTNode other) {
+ if (statements == null) return;
+ for (int i = 0; i < statements.length; ++i) {
+ if (statements[i] == child) {
+ other.setParent(statements[i].getParent());
+ other.setPropertyInParent(statements[i].getPropertyInParent());
statements[i] = (IASTStatement) other;
}
}
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 c9477d3ce9f..4742eb26e0a 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
@@ -1,13 +1,13 @@
/*******************************************************************************
- * Copyright (c) 2004, 2011 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
+ * Copyright (c) 2004, 2011 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:
- * John Camelon (IBM) - Initial API and implementation
- * Markus Schorn (Wind River Systems)
+ * Contributors:
+ * John Camelon (IBM) - Initial API and implementation
+ * Markus Schorn (Wind River Systems)
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser.cpp;
@@ -44,10 +44,12 @@ public class CPPASTLiteralExpression extends ASTNode implements ICPPASTLiteralEx
this.value = value;
}
+ @Override
public CPPASTLiteralExpression copy() {
return copy(CopyStyle.withoutLocations);
}
+ @Override
public CPPASTLiteralExpression copy(CopyStyle style) {
CPPASTLiteralExpression copy = new CPPASTLiteralExpression(kind, value == null ? null
: value.clone());
@@ -58,20 +60,24 @@ public class CPPASTLiteralExpression extends ASTNode implements ICPPASTLiteralEx
return copy;
}
+ @Override
public int getKind() {
return kind;
}
- public void setKind(int value) {
+ @Override
+ public void setKind(int value) {
assertNotFrozen();
kind = value;
}
- public char[] getValue() {
+ @Override
+ public char[] getValue() {
return value;
}
- public void setValue(char[] value) {
+ @Override
+ public void setValue(char[] value) {
assertNotFrozen();
this.value= value;
}
@@ -100,7 +106,8 @@ public class CPPASTLiteralExpression extends ASTNode implements ICPPASTLiteralEx
return true;
}
- public IType getExpressionType() {
+ @Override
+ public IType getExpressionType() {
switch (getKind()) {
case lk_this: {
IScope scope = CPPVisitor.getContainingScope(this);
@@ -127,10 +134,12 @@ public class CPPASTLiteralExpression extends ASTNode implements ICPPASTLiteralEx
return new ProblemType(ISemanticProblem.TYPE_UNKNOWN_FOR_EXPRESSION);
}
+ @Override
public boolean isLValue() {
return getKind() == IASTLiteralExpression.lk_string_literal;
}
+ @Override
public ValueCategory getValueCategory() {
return isLValue() ? ValueCategory.LVALUE : ValueCategory.PRVALUE;
}
@@ -231,7 +240,8 @@ public class CPPASTLiteralExpression extends ASTNode implements ICPPASTLiteralEx
/**
* @deprecated, use {@link #setValue(char[])}, instead.
*/
- @Deprecated
+ @Override
+ @Deprecated
public void setValue(String value) {
assertNotFrozen();
this.value = value.toCharArray();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTName.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTName.java
index 9a4d26cb47e..54dd18bef60 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTName.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTName.java
@@ -6,10 +6,10 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * John Camelon(IBM) - Initial API and implementation
- * Markus Schorn (Wind River Systems)
- * Bryan Wilkinson (QNX)
- * Anton Leherbauer (Wind River Systems)
+ * John Camelon(IBM) - Initial API and implementation
+ * Markus Schorn (Wind River Systems)
+ * Bryan Wilkinson (QNX)
+ * Anton Leherbauer (Wind River Systems)
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser.cpp;
@@ -45,10 +45,12 @@ public class CPPASTName extends CPPASTNameBase implements ICPPASTCompletionConte
name = CharArrayUtils.EMPTY;
}
- public CPPASTName copy() {
+ @Override
+ public CPPASTName copy() {
return copy(CopyStyle.withoutLocations);
}
+ @Override
public CPPASTName copy(CopyStyle style) {
CPPASTName copy = new CPPASTName(name == null ? null : name.clone());
copy.setOffsetAndLength(this);
@@ -78,6 +80,7 @@ public class CPPASTName extends CPPASTNameBase implements ICPPASTCompletionConte
return null;
}
+ @Override
public IBinding[] findBindings(IASTName n, boolean isPrefix, String[] namespaces) {
IASTNode parent = getParent();
if (parent instanceof ICPPASTElaboratedTypeSpecifier) {
@@ -142,14 +145,17 @@ public class CPPASTName extends CPPASTNameBase implements ICPPASTCompletionConte
return (IBinding[])ArrayUtil.removeNulls(IBinding.class, bindings);
}
- public char[] toCharArray() {
+ @Override
+ public char[] toCharArray() {
return name;
}
- public char[] getSimpleID() {
+ @Override
+ public char[] getSimpleID() {
return name;
}
+ @Override
public char[] getLookupKey() {
return name;
}
@@ -185,6 +191,7 @@ public class CPPASTName extends CPPASTNameBase implements ICPPASTCompletionConte
return true;
}
+ @Override
public IBinding[] findBindings(IASTName n, boolean isPrefix) {
return findBindings(n, isPrefix, null);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTParameterDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTParameterDeclaration.java
index 7fa03b047a4..f317d66b1f7 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTParameterDeclaration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTParameterDeclaration.java
@@ -37,14 +37,17 @@ public class CPPASTParameterDeclaration extends ASTNode implements ICPPASTParame
setDeclarator(declarator);
}
+ @Override
public boolean isParameterPack() {
return fDeclarator != null && CPPVisitor.findInnermostDeclarator(fDeclarator).declaresParameterPack();
}
+ @Override
public CPPASTParameterDeclaration copy() {
return copy(CopyStyle.withoutLocations);
}
+ @Override
public CPPASTParameterDeclaration copy(CopyStyle style) {
CPPASTParameterDeclaration copy = new CPPASTParameterDeclaration();
copy.setDeclSpecifier(fDeclSpec == null ? null : fDeclSpec.copy(style));
@@ -56,15 +59,18 @@ public class CPPASTParameterDeclaration extends ASTNode implements ICPPASTParame
return copy;
}
+ @Override
public IASTDeclSpecifier getDeclSpecifier() {
return fDeclSpec;
}
- public ICPPASTDeclarator getDeclarator() {
+ @Override
+ public ICPPASTDeclarator getDeclarator() {
return fDeclarator;
}
- public void setDeclSpecifier(IASTDeclSpecifier declSpec) {
+ @Override
+ public void setDeclSpecifier(IASTDeclSpecifier declSpec) {
assertNotFrozen();
this.fDeclSpec = declSpec;
if (declSpec != null) {
@@ -73,7 +79,8 @@ public class CPPASTParameterDeclaration extends ASTNode implements ICPPASTParame
}
}
- public void setDeclarator(IASTDeclarator declarator) {
+ @Override
+ public void setDeclarator(IASTDeclarator declarator) {
assertNotFrozen();
if (declarator instanceof ICPPASTDeclarator) {
fDeclarator = (ICPPASTDeclarator) declarator;
@@ -85,7 +92,7 @@ public class CPPASTParameterDeclaration extends ASTNode implements ICPPASTParame
}
@Override
- public boolean accept( ASTVisitor action ){
+ public boolean accept(ASTVisitor action) {
if (action.shouldVisitParameterDeclarations) {
switch (action.visit((IASTParameterDeclaration) this)) {
case ASTVisitor.PROCESS_ABORT: return false;
@@ -105,7 +112,8 @@ public class CPPASTParameterDeclaration extends ASTNode implements ICPPASTParame
}
return true;
}
-
+
+ @Override
public void replace(IASTNode child, IASTNode other) {
if (child == fDeclarator) {
other.setPropertyInParent(child.getPropertyInParent());
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateIDAmbiguity.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateIDAmbiguity.java
index 4cb5929ce15..6ae39e11ae9 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateIDAmbiguity.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateIDAmbiguity.java
@@ -57,7 +57,7 @@ public class CPPASTTemplateIDAmbiguity extends ASTAmbiguousNode implements IASTA
}
@Override
- public IASTNode resolveAmbiguity(ASTVisitor resolver) {
+ protected final IASTNode doResolveAmbiguity(ASTVisitor resolver) {
final IASTAmbiguityParent owner= (IASTAmbiguityParent) getParent();
IASTNode nodeToReplace= this;
@@ -77,10 +77,7 @@ public class CPPASTTemplateIDAmbiguity extends ASTAmbiguousNode implements IASTA
// Setup the ast to use the alternative
owner.replace(nodeToReplace, expression);
- nodeToReplace= expression;
-
- // Handle nested ambiguities first
- expression.accept(resolver);
+ nodeToReplace= resolveNestedAmbiguities(expression, resolver);
int count= checkNames(templateNames);
if (count > bestCount) {
@@ -163,18 +160,22 @@ public class CPPASTTemplateIDAmbiguity extends ASTAmbiguousNode implements IASTA
return fNodes;
}
+ @Override
public IASTExpression copy() {
throw new UnsupportedOperationException();
}
+ @Override
public IASTExpression copy(CopyStyle style) {
throw new UnsupportedOperationException();
}
+ @Override
public void addExpression(IASTExpression e) {
throw new UnsupportedOperationException();
}
+ @Override
public IASTExpression[] getExpressions() {
throw new UnsupportedOperationException();
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ClassTypeHelper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ClassTypeHelper.java
index d27172e0038..4dd50a7d918 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ClassTypeHelper.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ClassTypeHelper.java
@@ -15,6 +15,10 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser.cpp;
+import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.ARRAY;
+import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.CVTYPE;
+import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.TDEF;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -180,7 +184,7 @@ public class ClassTypeHelper {
ICPPClassType backup= getBackupDefinition(host);
if (backup != null)
return backup.getBases();
-
+
return ICPPBase.EMPTY_BASE_ARRAY;
}
}
@@ -203,7 +207,7 @@ public class ClassTypeHelper {
ICPPClassType backup= getBackupDefinition(host);
if (backup != null)
return backup.getDeclaredFields();
-
+
return ICPPField.EMPTY_CPPFIELD_ARRAY;
}
}
@@ -235,7 +239,7 @@ public class ClassTypeHelper {
}
return (ICPPField[]) ArrayUtil.trim(ICPPField.class, result);
}
-
+
/**
* Returns all direct and indirect base classes.
* @param classType a class
@@ -248,7 +252,7 @@ public class ClassTypeHelper {
result.remove(classType);
return result.toArray(new ICPPClassType[result.size()]);
}
-
+
private static void getAllBases(ICPPClassType classType, HashSet result) {
ICPPBase[] bases= classType.getBases();
for (ICPPBase base : bases) {
@@ -291,10 +295,10 @@ public class ClassTypeHelper {
}
return (ICPPMethod[]) ArrayUtil.trim(ICPPMethod.class, methods);
}
-
+
public static ICPPMethod[] getMethods(ICPPClassType ct) {
ObjectSet set = getOwnMethods(ct);
-
+
ICPPClassType[] bases= getAllBases(ct);
for (ICPPClassType base : bases) {
set.addAll(base.getDeclaredMethods());
@@ -319,7 +323,7 @@ public class ClassTypeHelper {
}
return set;
}
-
+
public static ICPPMethod[] getDeclaredMethods(ICPPInternalClassTypeMixinHost host) {
if (host.getDefinition() == null) {
host.checkForDefinition();
@@ -393,7 +397,7 @@ public class ClassTypeHelper {
ICPPClassType backup= getBackupDefinition(host);
if (backup != null)
return backup.getNestedClasses();
-
+
return ICPPClassType.EMPTY_CLASS_ARRAY;
}
}
@@ -445,18 +449,17 @@ public class ClassTypeHelper {
}
return field;
}
-
-
+
/**
- * Returns whether {@code method} is virtual. This is the case if it is declared to be virtual or
- * overrides another virtual method.
+ * Returns whether {@code method} is virtual. This is the case if it is declared to be virtual
+ * or overrides another virtual method.
*/
public static boolean isVirtual(ICPPMethod m) {
if (m instanceof ICPPConstructor)
return false;
if (m.isVirtual())
return true;
-
+
final char[] mname= m.getNameCharArray();
final ICPPClassType mcl= m.getClassOwner();
if (mcl != null) {
@@ -511,18 +514,18 @@ public class ClassTypeHelper {
return false;
if (!functionTypesAllowOverride(source.getType(), target.getType()))
return false;
-
+
final ICPPClassType sourceClass= source.getClassOwner();
final ICPPClassType targetClass= target.getClassOwner();
if (sourceClass == null || targetClass == null)
return false;
-
+
ICPPClassType[] bases= getAllBases(sourceClass);
for (ICPPClassType base : bases) {
if (base.isSameType(targetClass))
return true;
}
-
+
return false;
}
@@ -532,12 +535,12 @@ public class ClassTypeHelper {
public static ICPPMethod[] findOverridden(ICPPMethod method) {
if (method instanceof ICPPConstructor)
return ICPPMethod.EMPTY_CPPMETHOD_ARRAY;
-
+
final char[] mname= method.getNameCharArray();
final ICPPClassType mcl= method.getClassOwner();
if (mcl == null)
return ICPPMethod.EMPTY_CPPMETHOD_ARRAY;
-
+
final ArrayList result= new ArrayList();
final HashMap virtualInClass= new HashMap();
final ICPPFunctionType mft= method.getType();
@@ -550,7 +553,7 @@ public class ClassTypeHelper {
findOverridden((ICPPClassType) b, mname, mft, virtualInClass, result);
}
}
-
+
// list is filled from most derived up to here, reverse it
Collections.reverse(result);
return result.toArray(new ICPPMethod[result.size()]);
@@ -567,7 +570,7 @@ public class ClassTypeHelper {
Boolean visitedBefore= virtualInClass.get(cl);
if (visitedBefore != null)
return visitedBefore;
-
+
ICPPMethod[] methods= cl.getDeclaredMethods();
ICPPMethod candidate= null;
boolean hasOverridden= false;
@@ -578,7 +581,7 @@ public class ClassTypeHelper {
break;
}
}
-
+
// prevent recursion
virtualInClass.put(cl, hasOverridden);
ICPPBase[] bases= cl.getBases();
@@ -610,7 +613,7 @@ public class ClassTypeHelper {
final ICPPClassType mcl= method.getClassOwner();
if (mcl == null)
return ICPPMethod.EMPTY_CPPMETHOD_ARRAY;
-
+
ICPPClassType[] subclasses= getSubClasses(index, mcl);
return findOverriders(subclasses, method);
}
@@ -645,7 +648,7 @@ public class ClassTypeHelper {
private static void getSubClasses(IIndex index, ICPPBinding classOrTypedef, List result, HashSet handled) throws CoreException {
if (!(classOrTypedef instanceof IType))
return;
-
+
final String key = ASTTypeUtil.getType((IType) classOrTypedef, true);
if (!handled.add(key)) {
return;
@@ -674,7 +677,7 @@ public class ClassTypeHelper {
private static final int KIND_ASSIGNMENT_OP= 2;
private static final int KIND_DTOR= 3;
private static final int KIND_OTHER= 4;
-
+
/**
* For implicit methods the exception specification is inherited, search it
*/
@@ -688,7 +691,7 @@ public class ClassTypeHelper {
int kind= getImplicitMethodKind(owner, implicitMethod);
if (kind == KIND_OTHER)
return null;
-
+
List inheritedTypeids = new ArrayList();
ICPPClassType[] bases= getAllBases(owner);
for (ICPPClassType base : bases) {
@@ -737,13 +740,13 @@ public class ClassTypeHelper {
}
return KIND_OTHER;
}
- return KIND_OTHER;
+ return KIND_OTHER;
}
private static boolean isRefToConstClass(ICPPClassType ct, IType t) {
while (t instanceof ITypedef)
t= ((ITypedef) t).getType();
-
+
if (t instanceof ICPPReferenceType) {
t= ((ICPPReferenceType) t).getType();
while (t instanceof ITypedef)
@@ -809,6 +812,126 @@ public class ClassTypeHelper {
return true;
}
+ /**
+ * Returns true if and only if the given class has a trivial copy constructor.
+ * A copy constructor is trivial if:
+ *
+ *
it is implicitly defined by the compiler, and
+ *
isPolymorphic(classTarget) == false, and
+ *
the class has no virtual base classes, and
+ *
every direct base class has trivial copy constructor, and
+ *
for every nonstatic data member that has class type or array of class type, that type
+ * has trivial copy constructor.
+ *
+ * Similar to std::tr1::has_trivial_copy.
+ *
+ * @param classTarget the class to check
+ * @return true if the class has a trivial copy constructor
+ */
+ public static boolean hasTrivialCopyCtor(ICPPClassType classTarget) {
+ if (getImplicitCopyCtor(classTarget) == null)
+ return false;
+ if (isPolymorphic(classTarget))
+ return false;
+ for (ICPPBase base : classTarget.getBases()) {
+ if (base.isVirtual())
+ return false;
+ }
+ for (ICPPClassType baseClass : getAllBases(classTarget)) {
+ if (!classTarget.isSameType(baseClass) && !hasTrivialCopyCtor(baseClass))
+ return false;
+ }
+ for (ICPPField field : classTarget.getDeclaredFields()) {
+ if (!field.isStatic()) {
+ IType type = field.getType();
+ type = SemanticUtil.getNestedType(type, TDEF | CVTYPE | ARRAY);
+ if (type instanceof ICPPClassType && !classTarget.isSameType(type) &&
+ !hasTrivialCopyCtor((ICPPClassType) type)) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Returns the compiler-generated copy constructor for the given class, or null
+ * if the class doesn't have a compiler-generated copy constructor.
+ *
+ * @param classTarget the class to get the copy ctor for.
+ * @return the compiler-generated copy constructor, or null if the class doesn't
+ * have a compiler-generated copy constructor.
+ */
+ private static ICPPConstructor getImplicitCopyCtor(ICPPClassType classTarget) {
+ for (ICPPConstructor ctor : classTarget.getConstructors()) {
+ if (ctor.isImplicit() && getImplicitMethodKind(classTarget, ctor) == KIND_COPY_CTOR)
+ return ctor;
+ }
+ return null;
+ }
+
+ /**
+ * Returns true if and only if the given class has a trivial destructor.
+ * A destructor is trivial if:
+ *
+ *
it is implicitly defined by the compiler, and
+ *
every direct base class has trivial destructor, and
+ *
for every nonstatic data member that has class type or array of class type, that type
+ * has trivial destructor.
+ *
+ * Similar to std::tr1::has_trivial_destructor.
+ *
+ * @param classTarget the class to check
+ * @return true if the class has a trivial destructor
+ */
+ public static boolean hasTrivialDestructor(ICPPClassType classTarget) {
+ for (ICPPMethod method : classTarget.getDeclaredMethods()) {
+ if (method.isDestructor())
+ return false;
+ }
+ for (ICPPClassType baseClass : getAllBases(classTarget)) {
+ if (!classTarget.isSameType(baseClass) && !hasTrivialDestructor(baseClass))
+ return false;
+ }
+ for (ICPPField field : classTarget.getDeclaredFields()) {
+ if (!field.isStatic()) {
+ IType type = field.getType();
+ type = SemanticUtil.getNestedType(type, TDEF | CVTYPE | ARRAY);
+ if (type instanceof ICPPClassType && !classTarget.isSameType(type) &&
+ !hasTrivialDestructor((ICPPClassType) type)) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Returns true if and only if the given class declares or inherits a virtual
+ * function. Similar to std::tr1::is_polymorphic.
+ *
+ * @param classTarget the class to check
+ * @return true if the class declares or inherits a virtual function.
+ */
+ public static boolean isPolymorphic(ICPPClassType classTarget) {
+ if (hasDeclaredVirtualMethod(classTarget))
+ return true;
+ for (ICPPClassType baseClass : getAllBases(classTarget)) {
+ if (hasDeclaredVirtualMethod(baseClass))
+ return true;
+ }
+ return false;
+ }
+
+ private static boolean hasDeclaredVirtualMethod(ICPPClassType classTarget) {
+ for (ICPPMethod method : classTarget.getDeclaredMethods()) {
+ if (method.isVirtual()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
/**
* Checks whether class is abstract, i.e. has pure virtual functions that were
* not implemented in base after declaration.
@@ -820,7 +943,7 @@ public class ClassTypeHelper {
public static ICPPMethod[] getPureVirtualMethods(ICPPClassType classType) {
Map> result= collectPureVirtualMethods(classType,
new HashMap>>());
-
+
int resultArraySize = 0;
for (List methods : result.values()) {
resultArraySize += methods.size();
@@ -837,14 +960,13 @@ public class ClassTypeHelper {
private static Map> collectPureVirtualMethods(ICPPClassType classType,
Map>> cache) {
-
Map> result = cache.get(classType);
if (result != null)
return result;
-
+
result= new HashMap>();
cache.put(classType, result);
-
+
// Look at the pure virtual methods of the base classes
Set handledBaseClasses= new HashSet();
for (ICPPBase base : classType.getBases()) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/ASTLiteralNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/ASTLiteralNode.java
index 638108f78a5..7d7b5b74e5f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/ASTLiteralNode.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/ASTLiteralNode.java
@@ -6,7 +6,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Markus Schorn - initial API and implementation
+ * Markus Schorn - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite;
@@ -31,10 +31,12 @@ public class ASTLiteralNode implements IASTNode {
fCode= code;
}
+ @Override
public String getRawSignature() {
return fCode;
}
+ @Override
public boolean accept(ASTVisitor visitor) {
if (visitor instanceof ASTWriterVisitor) {
((ASTWriterVisitor) visitor).visit(this);
@@ -42,72 +44,90 @@ public class ASTLiteralNode implements IASTNode {
return true;
}
+ @Override
public boolean contains(IASTNode node) {
return false;
}
+ @Override
public String getContainingFilename() {
return null;
}
+ @Override
public IASTFileLocation getFileLocation() {
return null;
}
+ @Override
public IASTNodeLocation[] getNodeLocations() {
return null;
}
+ @Override
public IASTNode getParent() {
return null;
}
+ @Override
public IASTNode[] getChildren() {
return IASTNode.EMPTY_NODE_ARRAY;
}
+ @Override
public ASTNodeProperty getPropertyInParent() {
return null;
}
+ @Override
public IASTTranslationUnit getTranslationUnit() {
return null;
}
+ @Override
public boolean isPartOfTranslationUnitFile() {
return false;
}
+ @Override
public void setParent(IASTNode node) {
}
+ @Override
public void setPropertyInParent(ASTNodeProperty property) {
}
+ @Override
public IToken getSyntax() {
throw new UnsupportedOperationException();
}
+ @Override
public IToken getLeadingSyntax() {
throw new UnsupportedOperationException();
}
+ @Override
public IToken getTrailingSyntax() {
throw new UnsupportedOperationException();
}
+ @Override
public boolean isFrozen() {
return false;
}
+ @Override
public IASTNode copy() {
throw new UnsupportedOperationException();
}
+ @Override
public IASTNode copy(CopyStyle style) {
throw new UnsupportedOperationException();
}
+ @Override
public boolean isActive() {
return true;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/DeclarationGeneratorImpl.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/DeclarationGeneratorImpl.java
index 3b249519953..ee4c9d86257 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/DeclarationGeneratorImpl.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/DeclarationGeneratorImpl.java
@@ -6,15 +6,15 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Tomasz Wesolowski - initial API and implementation
+ * Tomasz Wesolowski - initial API and implementation
*******************************************************************************/
-
package org.eclipse.cdt.internal.core.dom.rewrite;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
+import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
@@ -51,35 +51,23 @@ import org.eclipse.cdt.core.dom.rewrite.DeclarationGenerator;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor;
/**
- *
* @author Tomasz Wesolowski
- *
*/
public class DeclarationGeneratorImpl extends DeclarationGenerator {
-
private INodeFactory factory;
/**
* Creates a new generator using the given factory.
*
- * @param factory
- * a factory to use. If a C++ type is requested, it has to be an instance of
- * {@link ICPPNodeFactory}.
+ * @param factory The factory to use. If a C++ type is requested, it has to be an instance of
+ * {@link ICPPNodeFactory}.
*/
public DeclarationGeneratorImpl(INodeFactory factory) {
this.factory = factory;
}
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.cdt.core.dom.rewrite.IDeclarationGenerator#createDeclSpecFromType(org.eclipse.cdt.core.
- * dom.ast.IType)
- */
@Override
public IASTDeclSpecifier createDeclSpecFromType(IType type) {
-
IASTDeclSpecifier returnedDeclSpec = null;
if (type instanceof IPointerType) {
@@ -133,20 +121,11 @@ public class DeclarationGeneratorImpl extends DeclarationGenerator {
return returnedDeclSpec;
}
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.cdt.core.dom.rewrite.IDeclarationGenerator#createDeclaratorFromType(org.eclipse.cdt.core
- * .dom.ast.IType, char[])
- */
@Override
public IASTDeclarator createDeclaratorFromType(IType type, char[] name) {
-
IASTDeclarator returnedDeclarator = null;
try {
-
// Addition of pointer operators has to be in reverse order, so it's deferred until the end
Map> pointerOperatorMap = new HashMap>();
@@ -225,9 +204,8 @@ public class DeclarationGeneratorImpl extends DeclarationGenerator {
}
finalizePointerOperators(pointerOperatorMap);
-
} catch (DOMException e) {
- e.printStackTrace();
+ CCorePlugin.log(e);
}
// Fallback
@@ -273,7 +251,7 @@ public class DeclarationGeneratorImpl extends DeclarationGenerator {
if (type instanceof ICPPPointerToMemberType) {
String classStr = ASTTypeUtil.getType(((ICPPPointerToMemberType) type).getMemberOfClass());
IASTName newName = factory.newName((classStr + "::").toCharArray()); //$NON-NLS-1$
- // any better way of getting class name from ICPPPointerToMemberType?
+ // Any better way of getting class name from ICPPPointerToMemberType?
ICPPASTPointerToMember member = ((ICPPNodeFactory) factory).newPointerToMember(newName);
member.setConst(((ICPPPointerToMemberType) type).isConst());
@@ -286,8 +264,8 @@ public class DeclarationGeneratorImpl extends DeclarationGenerator {
return pointer;
} else {
ICPPReferenceType refType = (ICPPReferenceType) type;
- ICPPASTReferenceOperator op = ((ICPPNodeFactory) factory).newReferenceOperator(refType
- .isRValueReference());
+ ICPPASTReferenceOperator op =
+ ((ICPPNodeFactory) factory).newReferenceOperator(refType.isRValueReference());
return op;
}
}
@@ -303,14 +281,13 @@ public class DeclarationGeneratorImpl extends DeclarationGenerator {
private IASTDeclSpecifier getDeclSpecForTemplate(ICPPTemplateInstance type) {
IASTName name = getName(type);
if (factory instanceof ICPPNodeFactory) {
-
if (name instanceof ICPPASTQualifiedName) {
ICPPASTQualifiedName fullQualifiedName = (ICPPASTQualifiedName) name;
IASTName templateName = fullQualifiedName.getLastName();
ICPPASTTemplateId tempId = getTemplateId(type, templateName);
- ICPPASTQualifiedName newQualifiedName = ((ICPPNodeFactory) factory)
- .newQualifiedName();
+ ICPPASTQualifiedName newQualifiedName =
+ ((ICPPNodeFactory) factory).newQualifiedName();
int nbQualifiedNames = fullQualifiedName.getNames().length;
if (nbQualifiedNames > 1) {
for (int i = 0; i < nbQualifiedNames - 1; i++) {
@@ -320,7 +297,6 @@ public class DeclarationGeneratorImpl extends DeclarationGenerator {
newQualifiedName.addName(tempId);
return factory.newTypedefNameSpecifier(newQualifiedName);
-
} else {
IASTName templateName = getName(type);
ICPPASTTemplateId tempId = getTemplateId(type, templateName);
@@ -352,12 +328,10 @@ public class DeclarationGeneratorImpl extends DeclarationGenerator {
char[][] qualifiedNameCharArray = CPPVisitor.getQualifiedNameCharArray(binding);
IASTName name;
if (qualifiedNameCharArray.length > 1) {
-
name = ((ICPPNodeFactory) factory).newQualifiedName();
for (char[] cs : qualifiedNameCharArray) {
((ICPPASTQualifiedName) name).addName(factory.newName(cs));
}
-
} else if (qualifiedNameCharArray.length == 1) {
name = factory.newName(qualifiedNameCharArray[0]);
} else {
@@ -365,5 +339,4 @@ public class DeclarationGeneratorImpl extends DeclarationGenerator {
}
return name;
}
-
}
\ No newline at end of file
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/TrackedNodePosition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/TrackedNodePosition.java
index d31331325c4..d92ade75747 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/TrackedNodePosition.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/TrackedNodePosition.java
@@ -30,9 +30,7 @@ public class TrackedNodePosition implements ITrackedNodePosition {
this.node= node;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.corext.dom.ITrackedNodePosition#getStartPosition()
- */
+ @Override
public int getStartPosition() {
if (this.group.isEmpty()) {
return this.node.getOffset();
@@ -44,9 +42,7 @@ public class TrackedNodePosition implements ITrackedNodePosition {
return coverage.getOffset();
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.corext.dom.ITrackedNodePosition#getLength()
- */
+ @Override
public int getLength() {
if (this.group.isEmpty()) {
return this.node.getLength();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ASTWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ASTWriter.java
index 701cfdb6b92..5b7229e5de9 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ASTWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ASTWriter.java
@@ -8,10 +8,19 @@
*
* Contributors:
* Institute for Software - initial API and implementation
+ * Sergey Prigogin (Google)
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
+import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration;
+import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
+import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
+import org.eclipse.cdt.core.dom.ast.IASTIfStatement;
import org.eclipse.cdt.core.dom.ast.IASTNode;
+import org.eclipse.cdt.core.dom.ast.IASTStatement;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTVisibilityLabel;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
import org.eclipse.cdt.internal.core.dom.rewrite.changegenerator.ChangeGeneratorWriterVisitor;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.ASTCommenter;
@@ -19,14 +28,11 @@ import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
/**
* ASTWriter main class. Generates source code from IASTNode.
- * Uses a hangeGeneratorWriterVisitor to generate the code for the given nodes.
- *
- * @see ChangeGeneratorWriterVisitor
+ * Uses a {@link ChangeGeneratorWriterVisitor} to generate the code for the given nodes.
*
* @author Emanuel Graf
*/
public class ASTWriter {
- private ChangeGeneratorWriterVisitor transformationVisitor;
private ASTModificationStore modificationStore = new ASTModificationStore();
private String givenIndentation = ""; //$NON-NLS-1$
@@ -55,18 +61,13 @@ public class ASTWriter {
* @throws ProblemRuntimeException if the node or one of it's children is a IASTProblemNode.
*/
public String write(IASTNode rootNode) throws ProblemRuntimeException {
- return write(rootNode, null, new NodeCommentMap());
- }
-
- public String write(IASTNode rootNode, NodeCommentMap commentMap) {
- return write(rootNode, null, commentMap);
+ return write(rootNode, new NodeCommentMap());
}
/**
* Generates the source code representing this node including comments.
*
* @param rootNode Node to write.
- * @param fileScope
* @param commentMap Node Comment Map ASTCommenter
* @return A String representing the source code for the node.
* @throws ProblemRuntimeException if the node or one of it's children is
@@ -74,19 +75,95 @@ public class ASTWriter {
*
* @see ASTCommenter#getCommentedNodeMap(org.eclipse.cdt.core.dom.ast.IASTTranslationUnit)
*/
- public String write(IASTNode rootNode, String fileScope, NodeCommentMap commentMap)
+ public String write(IASTNode rootNode, NodeCommentMap commentMap)
throws ProblemRuntimeException {
- transformationVisitor = new ChangeGeneratorWriterVisitor(modificationStore, givenIndentation,
- fileScope, commentMap);
+ ChangeGeneratorWriterVisitor writer = new ChangeGeneratorWriterVisitor(
+ modificationStore, givenIndentation, null, commentMap);
if (rootNode != null) {
- rootNode.accept(transformationVisitor);
+ rootNode.accept(writer);
}
- String str = transformationVisitor.toString();
- transformationVisitor.cleanCache();
- return str;
+ return writer.toString();
}
public void setModificationStore(ASTModificationStore modificationStore) {
this.modificationStore = modificationStore;
}
+
+ /**
+ * Returns true if the node should be separated by a blank line from the node
+ * before it.
+ *
+ * @param node The node.
+ * @return true if the node should be separated by a blank line from the node
+ * before it.
+ */
+ public static boolean requiresLeadingBlankLine(IASTNode node) {
+ if (node instanceof ICPPASTTemplateDeclaration) {
+ node = ((ICPPASTTemplateDeclaration) node).getDeclaration();
+ }
+ return node instanceof IASTASMDeclaration ||
+ node instanceof IASTFunctionDefinition ||
+ node instanceof ICPPASTVisibilityLabel;
+ }
+
+ /**
+ * Returns true if the node should be separated by a blank line from the node
+ * after it.
+ *
+ * @param node The node.
+ * @return true if the node should be separated by a blank line from the node
+ * after it.
+ */
+ public static boolean requiresTrailingBlankLine(IASTNode node) {
+ if (node instanceof ICPPASTNamespaceDefinition)
+ return true;
+ if (node instanceof IASTFunctionDefinition)
+ return true;
+ if (node instanceof IASTIfStatement) {
+ IASTIfStatement statement = ((IASTIfStatement) node);
+ IASTStatement lastClause = statement.getElseClause();
+ if (lastClause == null)
+ lastClause = statement.getThenClause();
+
+ if (!(lastClause instanceof IASTCompoundStatement) &&
+ !doNodesHaveSameOffset(lastClause, statement)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Returns true if there should be no blank line after this node even if a blank
+ * line is normally required before the subsequent node.
+ *
+ * @param node The node.
+ * @return true if there should be no blank line after this node.
+ */
+ public static boolean suppressesTrailingBlankLine(IASTNode node) {
+ return node instanceof ICPPASTVisibilityLabel;
+ }
+
+ /**
+ * Returns true if the two given nodes should be separated by a blank line.
+ *
+ * @param node1 The first node.
+ * @param node2 The second node.
+ * @return true if the blank line between the nodes is needed.
+ */
+ public static boolean requireBlankLineInBetween(IASTNode node1, IASTNode node2) {
+ if (requiresTrailingBlankLine(node1))
+ return true;
+
+ return !suppressesTrailingBlankLine(node1) && requiresLeadingBlankLine(node2);
+ }
+
+ /**
+ * Returns true if the two given nodes have the same offset. For nodes that are normally
+ * separated by other tokens this is an indication that they were produced by the same macro
+ * expansion.
+ */
+ private static boolean doNodesHaveSameOffset(IASTNode node1, IASTNode node2) {
+ return node1.getFileLocation().getNodeOffset() == node2.getFileLocation().getNodeOffset();
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ASTWriterVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ASTWriterVisitor.java
index 553d8907c64..16f9325785f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ASTWriterVisitor.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ASTWriterVisitor.java
@@ -9,6 +9,7 @@
* Contributors:
* Institute for Software - initial API and implementation
* Markus Schorn (Wind River Systems)
+ * Sergey Prigogin (Google)
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
@@ -38,15 +39,14 @@ import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
/**
* Visits all nodes, prints leading comments and handles macro expansions. The
- * source code generation is delegated to severals NodeWriters.
+ * source code generation is delegated to severals {@code NodeWriter}s.
*
- * @see NodeWriter
* @see MacroExpansionHandler
*
* @author Emanuel Graf IFS
*/
public class ASTWriterVisitor extends ASTVisitor {
- protected Scribe scribe = new Scribe();
+ protected final Scribe scribe = new Scribe();
protected NodeCommentMap commentMap;
protected ExpressionWriter expWriter;
protected DeclSpecWriter declSpecWriter;
@@ -57,6 +57,9 @@ public class ASTWriterVisitor extends ASTVisitor {
protected NameWriter nameWriter;
protected TemplateParameterWriter tempParameterWriter;
protected MacroExpansionHandler macroHandler;
+ private boolean insertLeadingBlankLine;
+ private boolean suppressLeadingBlankLine;
+ private boolean spaceNeededBeforeName;
{
shouldVisitExpressions = true;
@@ -83,6 +86,7 @@ public class ASTWriterVisitor extends ASTVisitor {
scribe.setGivenIndentation(givenIndentation);
init(commentMap);
this.commentMap = commentMap;
+ this.suppressLeadingBlankLine = true;
}
private void init(NodeCommentMap commentMap) {
@@ -135,6 +139,10 @@ public class ASTWriterVisitor extends ASTVisitor {
@Override
public int visit(IASTName name) {
+ if (spaceNeededBeforeName && name.getSimpleID().length != 0) {
+ scribe.printSpace();
+ spaceNeededBeforeName = false;
+ }
writeLeadingComments(name);
if (!macroHandler.checkisMacroExpansionNode(name)) {
nameWriter.writeName(name);
@@ -166,24 +174,31 @@ public class ASTWriterVisitor extends ASTVisitor {
@Override
public int visit(IASTStatement statement) {
+ insertBlankLineIfNeeded(statement);
writeLeadingComments(statement);
- if (macroHandler.isStatementWithMixedLocation(statement) &&
- !(statement instanceof IASTCompoundStatement)) {
- return statementWriter.writeMixedStatement(statement);
+ try {
+ if (macroHandler.isStatementWithMixedLocation(statement) &&
+ !(statement instanceof IASTCompoundStatement)) {
+ return statementWriter.writeMixedStatement(statement);
+ }
+ if (macroHandler.checkisMacroExpansionNode(statement)) {
+ return ASTVisitor.PROCESS_SKIP;
+ }
+ return statementWriter.writeStatement(statement, true);
+ } finally {
+ setLeadingBlankLineFlags(statement);
}
- if (macroHandler.checkisMacroExpansionNode(statement)) {
- return ASTVisitor.PROCESS_SKIP;
- }
- return statementWriter.writeStatement(statement, true);
}
@Override
public int visit(IASTDeclaration declaration) {
+ insertBlankLineIfNeeded(declaration);
writeLeadingComments(declaration);
if (!macroHandler.checkisMacroExpansionNode(declaration)) {
declarationWriter.writeDeclaration(declaration);
+ setLeadingBlankLineFlags(declaration);
}
- return ASTVisitor.PROCESS_SKIP;
+ return ASTVisitor.PROCESS_SKIP;
}
@Override
@@ -219,9 +234,7 @@ public class ASTWriterVisitor extends ASTVisitor {
parameterDeclaration.getDeclSpecifier().accept(this);
IASTDeclarator declarator = getParameterDeclarator(parameterDeclaration);
- if (getParameterName(declarator).toString().length() != 0) {
- scribe.printSpaces(1);
- }
+ spaceNeededBeforeName = true;
declarator.accept(this);
}
return ASTVisitor.PROCESS_SKIP;
@@ -237,9 +250,11 @@ public class ASTWriterVisitor extends ASTVisitor {
@Override
public int visit(ICPPASTNamespaceDefinition namespace) {
+ insertBlankLineIfNeeded(namespace);
writeLeadingComments(namespace);
if (!macroHandler.checkisMacroExpansionNode(namespace)) {
declarationWriter.writeDeclaration(namespace);
+ setLeadingBlankLineFlags(namespace);
}
return ASTVisitor.PROCESS_SKIP;
}
@@ -257,4 +272,38 @@ public class ASTWriterVisitor extends ASTVisitor {
scribe.cleanCache();
macroHandler.reset();
}
+
+ private void insertBlankLineIfNeeded(IASTNode node) {
+ if (!suppressLeadingBlankLine &&
+ (insertLeadingBlankLine || ASTWriter.requiresLeadingBlankLine(node))) {
+ scribe.newLine();
+ }
+ insertLeadingBlankLine = false;
+ suppressLeadingBlankLine = false;
+ }
+
+ private void setLeadingBlankLineFlags(IASTNode node) {
+ insertLeadingBlankLine = ASTWriter.requiresTrailingBlankLine(node);
+ suppressLeadingBlankLine = ASTWriter.suppressesTrailingBlankLine(node);
+ }
+
+ public boolean isSuppressLeadingBlankLine() {
+ return suppressLeadingBlankLine;
+ }
+
+ public void setSuppressLeadingBlankLine(boolean value) {
+ this.suppressLeadingBlankLine = value;
+ }
+
+ public boolean isSpaceNeededBeforeName() {
+ return spaceNeededBeforeName;
+ }
+
+ public void setSpaceNeededBeforeName(boolean value) {
+ this.spaceNeededBeforeName = value;
+ }
+
+ public void newLine() {
+ scribe.newLine();
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ContainerNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ContainerNode.java
index a9cfdeee41b..f32f3a57262 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ContainerNode.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ContainerNode.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
@@ -20,18 +20,14 @@ import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-
/**
- *
- * This class serves as a container to pass several nodes to the
- * ASTWriter. This container is used if source code for several sibling nodes but
- * for their common parent node should be generated.
+ * This class serves as a container to pass several nodes to the ASTWriter.
+ * This container is used if source code for several sibling nodes but for their common parent
+ * node should be generated.
*
* @author Emanuel Graf IFS
- *
*/
public class ContainerNode extends ASTNode {
-
private final IASTTranslationUnit tu = null;
private final ArrayList nodes = new ArrayList();
@@ -42,10 +38,12 @@ public class ContainerNode extends ASTNode {
}
}
+ @Override
public ContainerNode copy() {
return copy(CopyStyle.withoutLocations);
}
+ @Override
public ContainerNode copy(CopyStyle style) {
ContainerNode copy = new ContainerNode();
for (IASTNode node : getNodes())
@@ -59,7 +57,7 @@ public class ContainerNode extends ASTNode {
public void addNode(IASTNode node) {
nodes.add(node);
- if(node.getParent() == null) {
+ if (node.getParent() == null) {
node.setParent(tu);
}
}
@@ -80,5 +78,4 @@ public class ContainerNode extends ASTNode {
public List getNodes(){
return Collections.unmodifiableList(nodes);
}
-
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/DeclSpecWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/DeclSpecWriter.java
index d643b8a317d..ba7fb2e8623 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/DeclSpecWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/DeclSpecWriter.java
@@ -11,7 +11,6 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
@@ -62,12 +61,12 @@ public class DeclSpecWriter extends NodeWriter {
private static final String ENUM = "enum "; //$NON-NLS-1$
private static final String _BOOL = "_Bool"; //$NON-NLS-1$
- public DeclSpecWriter(Scribe scribe, ASTVisitor visitor, NodeCommentMap commentMap) {
+ public DeclSpecWriter(Scribe scribe, ASTWriterVisitor visitor, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap);
}
protected void writeDelcSpec(IASTDeclSpecifier declSpec) {
-// Write general DelcSpec Keywords
+ // Write general DelcSpec Keywords
writeDeclSpec(declSpec);
if (declSpec instanceof ICPPASTDeclSpecifier) {
writeCPPDeclSpec((ICPPASTDeclSpecifier) declSpec);
@@ -129,7 +128,6 @@ public class DeclSpecWriter extends NodeWriter {
break;
}
- System.err.println("Unknown specifier type: " + type); //$NON-NLS-1$
throw new IllegalArgumentException("Unknown specifier type: " + type); //$NON-NLS-1$
}
@@ -152,7 +150,7 @@ public class DeclSpecWriter extends NodeWriter {
}
private void writeNamedTypeSpecifier(ICPPASTNamedTypeSpecifier namedSpc) {
- if ( namedSpc.isTypename() ){
+ if (namedSpc.isTypename()) {
scribe.print(TYPENAME);
}
namedSpc.getName().accept(visitor);
@@ -168,7 +166,7 @@ public class DeclSpecWriter extends NodeWriter {
}
private String getElabTypeString(int kind) {
- switch(kind) {
+ switch (kind) {
case IASTElaboratedTypeSpecifier.k_enum:
return ENUM;
case IASTElaboratedTypeSpecifier.k_struct:
@@ -179,8 +177,7 @@ public class DeclSpecWriter extends NodeWriter {
return CLASS_SPACE;
default:
- System.err.println("Unknown ElaboratedType: " + kind); //$NON-NLS-1$
- throw new IllegalArgumentException("Unknown ElaboratedType: " + kind); //$NON-NLS-1$
+ throw new IllegalArgumentException("Unknown elaborated type: " + kind); //$NON-NLS-1$
}
}
@@ -217,14 +214,13 @@ public class DeclSpecWriter extends NodeWriter {
scribe.print('{');
scribe.printSpace();
IASTEnumerator[] enums = enumSpec.getEnumerators();
- for (int i = 0; i< enums.length;++i) {
+ for (int i = 0; i < enums.length; ++i) {
writeEnumerator(enums[i]);
- if (i+1< enums.length) {
+ if (i + 1 < enums.length) {
scribe.print(NodeWriter.COMMA_SPACE);
}
}
scribe.print('}');
-
}
private void writeEnumerator(IASTEnumerator enumerator) {
@@ -246,21 +242,22 @@ public class DeclSpecWriter extends NodeWriter {
ICPPASTBaseSpecifier[] baseSpecifiers = cppComp.getBaseSpecifiers();
if (baseSpecifiers.length > 0) {
scribe.print(SPACE_COLON_SPACE);
- for (int i = 0; i < baseSpecifiers.length;++i) {
+ for (int i = 0; i < baseSpecifiers.length; ++i) {
writeBaseSpecifiers(baseSpecifiers[i]);
- if (i+1 < baseSpecifiers.length) {
+ if (i + 1 < baseSpecifiers.length) {
scribe.print(COMMA_SPACE);
}
}
hasTrailingComments = hasTrailingComments(baseSpecifiers[baseSpecifiers.length-1].getName());
}
}
- if (!hasTrailingComments){
+ if (!hasTrailingComments) {
scribe.newLine();
}
scribe.print('{');
scribe.newLine();
scribe.incrementIndentationLevel();
+ visitor.setSuppressLeadingBlankLine(true);
IASTDeclaration[] decls = getMembers(compDeclSpec);
if (decls.length > 0) {
@@ -285,7 +282,7 @@ public class DeclSpecWriter extends NodeWriter {
}
private void writeBaseSpecifiers(ICPPASTBaseSpecifier specifier) {
- switch(specifier.getVisibility()) {
+ switch (specifier.getVisibility()) {
case ICPPASTBaseSpecifier.v_public:
scribe.printStringSpace(PUBLIC);
break;
@@ -307,8 +304,7 @@ public class DeclSpecWriter extends NodeWriter {
case ICPPASTCompositeTypeSpecifier.k_class:
return CLASS;
default:
- System.err.println("Unknow Specifiertype: " + key); //$NON-NLS-1$
- throw new IllegalArgumentException("Unknow Specifiertype: " + key); //$NON-NLS-1$
+ throw new IllegalArgumentException("Unknown type specifier: " + key); //$NON-NLS-1$
}
}
@@ -319,8 +315,7 @@ public class DeclSpecWriter extends NodeWriter {
case IASTCompositeTypeSpecifier.k_union:
return UNION;
default:
- System.err.println("Unknow Specifiertype: " + key); //$NON-NLS-1$
- throw new IllegalArgumentException("Unknow Specifiertype: " + key); //$NON-NLS-1$
+ throw new IllegalArgumentException("Unknown type specifier: " + key); //$NON-NLS-1$
}
}
@@ -328,7 +323,7 @@ public class DeclSpecWriter extends NodeWriter {
if (declSpec.isInline()) {
scribe.print(INLINE);
}
- switch(declSpec.getStorageClass()) {
+ switch (declSpec.getStorageClass()) {
case IASTDeclSpecifier.sc_typedef:
scribe.print(TYPEDEF);
break;
@@ -369,7 +364,7 @@ public class DeclSpecWriter extends NodeWriter {
private void printQualifiers(IASTSimpleDeclSpecifier simpDeclSpec) {
if (simpDeclSpec.isSigned()) {
scribe.printStringSpace(SIGNED);
- } else if (simpDeclSpec.isUnsigned()){
+ } else if (simpDeclSpec.isUnsigned()) {
scribe.printStringSpace(UNSIGNED);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/DeclarationWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/DeclarationWriter.java
index 6976f5fcf65..41ed66fc643 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/DeclarationWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/DeclarationWriter.java
@@ -9,10 +9,10 @@
* Contributors:
* Institute for Software - initial API and implementation
* Markus Schorn (Wind River Systems)
+ * Sergey Prigogin (Google)
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
@@ -47,7 +47,7 @@ import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
* @see IASTDeclaration
* @author Emanuel Graf IFS
*/
-public class DeclarationWriter extends NodeWriter{
+public class DeclarationWriter extends NodeWriter {
private static final String ASM_END = ")"; //$NON-NLS-1$
private static final String ASM_START = "asm("; //$NON-NLS-1$
private static final String TEMPLATE_DECLARATION = "template<"; //$NON-NLS-1$
@@ -57,7 +57,7 @@ public class DeclarationWriter extends NodeWriter{
private static final String USING = "using "; //$NON-NLS-1$
private boolean printSemicolon;
- public DeclarationWriter(Scribe scribe, ASTVisitor visitor, NodeCommentMap commentMap) {
+ public DeclarationWriter(Scribe scribe, ASTWriterVisitor visitor, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap);
}
@@ -72,6 +72,7 @@ public class DeclarationWriter extends NodeWriter{
writeASMDeclatation((IASTASMDeclaration) declaration);
} else if (declaration instanceof IASTFunctionDefinition) {
writeFunctionDefinition((IASTFunctionDefinition) declaration);
+ addNewLine = false;
} else if (declaration instanceof IASTProblemDeclaration) {
throw new ProblemRuntimeException((IASTProblemDeclaration) declaration);
} else if (declaration instanceof IASTSimpleDeclaration) {
@@ -98,17 +99,17 @@ public class DeclarationWriter extends NodeWriter{
}
if (hasTrailingComments(declaration)) {
- writeTrailingComments(declaration, addNewLine);
- } else if (addNewLine) {
+ writeTrailingComments(declaration, false);
+ }
+ if (addNewLine) {
scribe.newLine();
}
if (hasFreestandingComments(declaration)) {
+ if (declaration instanceof IASTFunctionDefinition) {
+ scribe.newLine();
+ }
writeFreeStandingComments(declaration);
}
-
- if (declaration instanceof ICPPASTUsingDirective) {
- scribe.newLine();
- }
}
private void writeVisibilityLabel(ICPPASTVisibilityLabel visiblityLabel) {
@@ -181,17 +182,18 @@ public class DeclarationWriter extends NodeWriter{
if (!hasTrailingComments(namespaceDefinition.getName())) {
scribe.newLine();
}
- scribe.printLBrace();
- scribe.newLine();
+ scribe.print('{');
+ scribe.newLine(2);
writeDeclarationsInNamespace(namespaceDefinition, namespaceDefinition.getDeclarations());
if (hasFreestandingComments(namespaceDefinition)) {
writeFreeStandingComments(namespaceDefinition);
}
- scribe.printRBrace();
+ scribe.newLine();
+ scribe.print('}');
if (hasTrailingComments(namespaceDefinition)) {
writeTrailingComments(namespaceDefinition);
- }else{
+ } else {
scribe.newLine();
}
}
@@ -211,7 +213,7 @@ public class DeclarationWriter extends NodeWriter{
}
private void writeLinkageSpecification(ICPPASTLinkageSpecification linkageSpecification) {
- scribe.print( EXTERN);
+ scribe.print(EXTERN);
scribe.print(linkageSpecification.getLiteral());
scribe.printSpaces(1);
@@ -266,10 +268,10 @@ public class DeclarationWriter extends NodeWriter{
if (declSpecifier instanceof IASTSimpleDeclSpecifier) {
IASTSimpleDeclSpecifier simDeclSpec = (IASTSimpleDeclSpecifier) declSpecifier;
if (simDeclSpec.getType() != IASTSimpleDeclSpecifier.t_unspecified) {
- scribe.printSpace();
+ visitor.setSpaceNeededBeforeName(true);
}
- }else {
- scribe.printSpace();
+ } else {
+ visitor.setSpaceNeededBeforeName(true);
}
IASTDeclarator declarator = ASTQueries.findOutermostDeclarator(funcDef.getDeclarator());
declarator.accept(visitor);
@@ -325,10 +327,16 @@ public class DeclarationWriter extends NodeWriter{
}
if (decls.length > 0) {
- if (!noSpace) {
- scribe.printSpace();
+ if (decls.length == 1) {
+ if (!noSpace)
+ visitor.setSpaceNeededBeforeName(true);
+ decls[0].accept(visitor);
+ } else {
+ if (!noSpace) {
+ scribe.printSpace();
+ }
+ writeNodeList(decls);
}
- writeNodeList(decls);
}
printSemicolon();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/DeclaratorWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/DeclaratorWriter.java
index 53c2655397c..4a9a8af3852 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/DeclaratorWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/DeclaratorWriter.java
@@ -7,12 +7,11 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
- * Markus Schorn (Wind River Systems)
+ * Institute for Software - initial API and implementation
+ * Markus Schorn (Wind River Systems)
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
@@ -32,44 +31,38 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTReferenceOperator;
import org.eclipse.cdt.core.dom.ast.gnu.c.ICASTKnRFunctionDeclarator;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
-
/**
- *
* Generates source code of declarator nodes. The actual string operations are delegated
- * to the Scribe class.
+ * to the {@link Scribe} class.
*
- * @see Scribe
* @see IASTDeclarator
* @author Emanuel Graf IFS
- *
*/
public class DeclaratorWriter extends NodeWriter {
-
- private static final String AMPERSAND_SPACE = "& "; //$NON-NLS-1$
- private static final String AMPERSAND__AMPERSAND_SPACE = "&& "; //$NON-NLS-1$
- private static final String STAR_SPACE = "* "; //$NON-NLS-1$
- private static final String PURE_VIRTUAL = " =0"; //$NON-NLS-1$
+ private static final String AMPERSAND_AMPERSAND = "&&"; //$NON-NLS-1$
+ private static final String PURE_VIRTUAL = " = 0"; //$NON-NLS-1$
private static final String MUTABLE = "mutable"; //$NON-NLS-1$
private static final String ARROW_OPERATOR = "->"; //$NON-NLS-1$
- public DeclaratorWriter(Scribe scribe, ASTVisitor visitor, NodeCommentMap commentMap) {
+ public DeclaratorWriter(Scribe scribe, ASTWriterVisitor visitor, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap);
}
protected void writeDeclarator(IASTDeclarator declarator) {
if (declarator instanceof IASTStandardFunctionDeclarator) {
writeFunctionDeclarator((IASTStandardFunctionDeclarator) declarator);
- }else if (declarator instanceof IASTArrayDeclarator) {
+ } else if (declarator instanceof IASTArrayDeclarator) {
writeArrayDeclarator((IASTArrayDeclarator) declarator);
- }else if (declarator instanceof IASTFieldDeclarator) {
+ } else if (declarator instanceof IASTFieldDeclarator) {
writeFieldDeclarator((IASTFieldDeclarator) declarator);
- }else if (declarator instanceof ICASTKnRFunctionDeclarator) {
+ } else if (declarator instanceof ICASTKnRFunctionDeclarator) {
writeCKnRFunctionDeclarator((ICASTKnRFunctionDeclarator) declarator);
- }else{
+ } else {
writeDefaultDeclarator(declarator);
}
-
- if(hasTrailingComments(declarator)) {
+
+ visitor.setSpaceNeededBeforeName(false);
+ if (hasTrailingComments(declarator)) {
writeTrailingComments(declarator, false);
}
}
@@ -81,7 +74,7 @@ public class DeclaratorWriter extends NodeWriter {
name.accept(visitor);
writeNestedDeclarator(declarator);
IASTInitializer init = getInitializer(declarator);
- if(init!= null) {
+ if (init != null) {
init.accept(visitor);
}
}
@@ -109,7 +102,7 @@ public class DeclaratorWriter extends NodeWriter {
private void writeInitializer(IASTStandardFunctionDeclarator funcDec) {
IASTInitializer init = getInitializer(funcDec);
- if(init != null) {
+ if (init != null) {
init.accept(visitor);
}
}
@@ -123,7 +116,11 @@ public class DeclaratorWriter extends NodeWriter {
private void writeNestedDeclarator(IASTDeclarator funcDec) {
IASTDeclarator nestedDeclarator = funcDec.getNestedDeclarator();
- if(nestedDeclarator != null) {
+ if (nestedDeclarator != null) {
+ if (visitor.isSpaceNeededBeforeName()) {
+ scribe.printSpace();
+ visitor.setSpaceNeededBeforeName(false);
+ }
scribe.print('(');
nestedDeclarator.accept(visitor);
scribe.print(')');
@@ -143,7 +140,7 @@ public class DeclaratorWriter extends NodeWriter {
scribe.printSpace();
scribe.print(MUTABLE);
}
- if(funcDec.isPureVirtual()) {
+ if (funcDec.isPureVirtual()) {
scribe.print(PURE_VIRTUAL);
}
writeExceptionSpecification(funcDec, funcDec.getExceptionSpecification());
@@ -165,10 +162,10 @@ public class DeclaratorWriter extends NodeWriter {
}
}
- protected void writeParameterDeclarations(IASTStandardFunctionDeclarator funcDec, IASTParameterDeclaration[] paraDecls) {
- writeNodeList(paraDecls);
- if(funcDec.takesVarArgs()){
- if(paraDecls.length > 0){
+ protected void writeParameterDeclarations(IASTStandardFunctionDeclarator funcDec, IASTParameterDeclaration[] paramDecls) {
+ writeNodeList(paramDecls);
+ if (funcDec.takesVarArgs()) {
+ if (paramDecls.length > 0) {
scribe.print(COMMA_SPACE);
}
scribe.print(VAR_ARGS);
@@ -178,15 +175,14 @@ public class DeclaratorWriter extends NodeWriter {
private void writePointer(IASTPointer operator) {
if (operator instanceof ICPPASTPointerToMember) {
ICPPASTPointerToMember pointerToMemberOp = (ICPPASTPointerToMember) operator;
- if(pointerToMemberOp.getName() != null){
+ if (pointerToMemberOp.getName() != null) {
pointerToMemberOp.getName().accept(visitor);
- scribe.print(STAR_SPACE);
+ scribe.print('*');
}
} else {
scribe.print('*');
}
-
-
+
if (operator.isConst()) {
scribe.printStringSpace(CONST);
}
@@ -204,9 +200,9 @@ public class DeclaratorWriter extends NodeWriter {
writePointer(pointOp);
} else if (operator instanceof ICPPASTReferenceOperator) {
if (((ICPPASTReferenceOperator) operator).isRValueReference()) {
- scribe.print(AMPERSAND__AMPERSAND_SPACE);
+ scribe.print(AMPERSAND_AMPERSAND);
} else {
- scribe.print(AMPERSAND_SPACE);
+ scribe.print('&');
}
}
}
@@ -222,7 +218,7 @@ public class DeclaratorWriter extends NodeWriter {
IASTArrayModifier[] arrMods = arrDecl.getArrayModifiers();
writeArrayModifiers(arrDecl, arrMods);
IASTInitializer initializer = getInitializer(arrDecl);
- if(initializer != null) {
+ if (initializer != null) {
initializer.accept(visitor);
}
}
@@ -255,7 +251,7 @@ public class DeclaratorWriter extends NodeWriter {
scribe.printSpace();
fieldDecl.getBitFieldSize().accept(visitor);
IASTInitializer initializer = getInitializer(fieldDecl);
- if(initializer != null) {
+ if (initializer != null) {
initializer.accept(visitor);
}
}
@@ -267,17 +263,15 @@ public class DeclaratorWriter extends NodeWriter {
scribe.print(')');
scribe.newLine();
writeKnRParameterDeclarations(knrFunct, knrFunct.getParameterDeclarations());
-
-
}
- protected void writeKnRParameterDeclarations(
- ICASTKnRFunctionDeclarator knrFunct, IASTDeclaration[] knrDeclarations) {
+ protected void writeKnRParameterDeclarations(ICASTKnRFunctionDeclarator knrFunct,
+ IASTDeclaration[] knrDeclarations) {
for (int i = 0; i < knrDeclarations.length; ++i) {
scribe.noNewLines();
knrDeclarations[i].accept(visitor);
scribe.newLines();
- if(i + 1 < knrDeclarations.length) {
+ if (i + 1 < knrDeclarations.length) {
scribe.newLine();
}
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ExpressionWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ExpressionWriter.java
index 8676cae0268..150f6c74545 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ExpressionWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ExpressionWriter.java
@@ -12,7 +12,6 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTArraySubscriptExpression;
import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
import org.eclipse.cdt.core.dom.ast.IASTCastExpression;
@@ -115,7 +114,7 @@ public class ExpressionWriter extends NodeWriter{
private static final String THIS = "this"; //$NON-NLS-1$
private final MacroExpansionHandler macroHandler;
- public ExpressionWriter(Scribe scribe, ASTVisitor visitor, MacroExpansionHandler macroHandler, NodeCommentMap commentMap) {
+ public ExpressionWriter(Scribe scribe, ASTWriterVisitor visitor, MacroExpansionHandler macroHandler, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap);
this.macroHandler = macroHandler;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/InitializerWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/InitializerWriter.java
index 37aaff78c0a..7adc8fdce86 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/InitializerWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/InitializerWriter.java
@@ -12,7 +12,6 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTEqualsInitializer;
import org.eclipse.cdt.core.dom.ast.IASTInitializer;
import org.eclipse.cdt.core.dom.ast.IASTInitializerClause;
@@ -36,7 +35,7 @@ import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
*/
public class InitializerWriter extends NodeWriter{
- public InitializerWriter(Scribe scribe, ASTVisitor visitor, NodeCommentMap commentMap) {
+ public InitializerWriter(Scribe scribe, ASTWriterVisitor visitor, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/MacroExpansionHandler.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/MacroExpansionHandler.java
index 798ef269639..1a6910dfea6 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/MacroExpansionHandler.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/MacroExpansionHandler.java
@@ -134,14 +134,13 @@ public class MacroExpansionHandler {
PDOMMacroReferenceName mName = (PDOMMacroReferenceName) iIndexName;
int eOff = mName.getFileLocation().getNodeOffset();
int eLength = mName.getFileLocation().getNodeLength();
- if (eOff < nOff && Math.abs((eOff+eLength-nOff)) < 3) {
+ if (eOff < nOff && Math.abs((eOff + eLength - nOff)) < 3) {
scribe.print(mName.toString() + " "); //$NON-NLS-1$
}
}
}
}
}
-
}
private IASTFileLocation getFileLocation(IASTNode node) {
@@ -180,7 +179,7 @@ public class MacroExpansionHandler {
IIndexName[] refs = index.findReferences(macroBinding[0]);
for (IIndexName iIndexName : refs) {
String filename2 = iIndexName.getFileLocation().getFileName();
- ListfileList = macroExpansion.get(filename2);
+ List fileList = macroExpansion.get(filename2);
if (paths.contains(filename2)) {
if (fileList == null) {
fileList = new ArrayList();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/NameWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/NameWriter.java
index c5c2a05f1af..941931511cd 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/NameWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/NameWriter.java
@@ -7,11 +7,10 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IBinding;
@@ -36,7 +35,7 @@ public class NameWriter extends NodeWriter {
* @param scribe
* @param visitor
*/
- public NameWriter(Scribe scribe, ASTVisitor visitor, NodeCommentMap commentMap) {
+ public NameWriter(Scribe scribe, ASTWriterVisitor visitor, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap);
}
@@ -45,7 +44,7 @@ public class NameWriter extends NodeWriter {
writeTempalteId((ICPPASTTemplateId) name);
} else if (name instanceof ICPPASTConversionName) {
scribe.print(OPERATOR);
- ((ICPPASTConversionName)name).getTypeId().accept(visitor);
+ ((ICPPASTConversionName) name).getTypeId().accept(visitor);
} else if (name instanceof ICPPASTQualifiedName){
writeQualifiedName((ICPPASTQualifiedName) name);
} else {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/NodeWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/NodeWriter.java
index 61a7f241430..627e8158a5f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/NodeWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/NodeWriter.java
@@ -7,13 +7,12 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
import java.util.ArrayList;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTComment;
import org.eclipse.cdt.core.dom.ast.IASTCopyLocation;
import org.eclipse.cdt.core.dom.ast.IASTNode;
@@ -21,17 +20,14 @@ import org.eclipse.cdt.core.dom.ast.IASTNodeLocation;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
/**
- *
* Base class for node writers. This class contains methods and string constants
* used by multiple node writers.
*
* @author Emanuel Graf IFS
- *
*/
public class NodeWriter {
-
protected Scribe scribe;
- protected ASTVisitor visitor;
+ protected ASTWriterVisitor visitor;
protected NodeCommentMap commentMap;
protected static final String COMMA_SPACE = ", "; //$NON-NLS-1$
protected static final String EQUALS = " = "; //$NON-NLS-1$
@@ -64,7 +60,7 @@ public class NodeWriter {
protected static final String COLON_COLON = "::"; //$NON-NLS-1$
protected static final String COLON_SPACE = ": "; //$NON-NLS-1$
- public NodeWriter(Scribe scribe, ASTVisitor visitor, NodeCommentMap commentMap) {
+ public NodeWriter(Scribe scribe, ASTWriterVisitor visitor, NodeCommentMap commentMap) {
super();
this.scribe = scribe;
this.visitor = visitor;
@@ -72,31 +68,42 @@ public class NodeWriter {
}
protected void writeNodeList(IASTNode[] nodes) {
- for(int i = 0; i < nodes.length; ++i) {
+ for (int i = 0; i < nodes.length; ++i) {
nodes[i].accept(visitor);
- if(i + 1 < nodes.length) {
+ if (i + 1 < nodes.length) {
scribe.print(COMMA_SPACE);
}
}
}
- protected void visitNodeIfNotNull(IASTNode node){
- if(node != null){
+ protected void visitNodeIfNotNull(IASTNode node) {
+ if (node != null) {
node.accept(visitor);
}
}
-
protected void writeTrailingComments(IASTNode node) {
- //default write newLine
+ // Default is to write a new line after trailing comments.
writeTrailingComments(node, true);
}
-
- protected boolean hasTrailingComments(IASTNode node){
- if(getTrailingComments(node).size()>0) {
- return true;
+
+ protected void writeTrailingComments(IASTNode node, boolean newLine) {
+ boolean first = true;
+ for (IASTComment comment : getTrailingComments(node)) {
+ if (!first) {
+ scribe.newLine();
+ }
+ scribe.printSpace();
+ scribe.print(comment.getComment());
+ first = false;
}
- return false;
+ if (newLine) {
+ scribe.newLine();
+ }
+ }
+
+ protected boolean hasTrailingComments(IASTNode node) {
+ return !getTrailingComments(node).isEmpty();
}
private ArrayList getTrailingComments(IASTNode node) {
@@ -108,22 +115,9 @@ public class NodeWriter {
}
return trailingComments;
}
-
- protected void writeTrailingComments(IASTNode node, boolean newLine) {
- for(IASTComment comment : getTrailingComments(node)) {
- scribe.printSpace();
- scribe.print(comment.getComment());
- if(newLine) {
- scribe.newLine();
- }
- }
- }
- protected boolean hasFreestandingComments(IASTNode node){
- if(getFreestandingComments(node).size()>0) {
- return true;
- }
- return false;
+ protected boolean hasFreestandingComments(IASTNode node) {
+ return !getFreestandingComments(node).isEmpty();
}
private ArrayList getFreestandingComments(IASTNode node) {
@@ -137,7 +131,7 @@ public class NodeWriter {
}
protected void writeFreeStandingComments(IASTNode node) {
- for(IASTComment comment : getFreestandingComments(node)) {
+ for (IASTComment comment : getFreestandingComments(node)) {
scribe.print(comment.getComment());
scribe.newLine();
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ProblemRuntimeException.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ProblemRuntimeException.java
index 1dbddc51c45..11a47db433c 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ProblemRuntimeException.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/ProblemRuntimeException.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
@@ -15,16 +15,13 @@ import org.eclipse.cdt.core.dom.ast.IASTProblem;
import org.eclipse.cdt.core.dom.ast.IASTProblemHolder;
/**
- *
- * This exception is thrown if a problem nod is passed to the astwriter. The Exception
+ * This exception is thrown if a problem node is passed to the ASTWriter. The exception
* contains the IASTProblemHolder that was passed to the writer.
*
* @see IASTProblem
* @author Emanuel Graf IFS
- *
*/
public class ProblemRuntimeException extends RuntimeException {
-
private static final long serialVersionUID = -3661425564246498786L;
private IASTProblemHolder problem;
@@ -32,8 +29,7 @@ public class ProblemRuntimeException extends RuntimeException {
problem = statement;
}
- public IASTProblemHolder getProblem(){
+ public IASTProblemHolder getProblem() {
return problem;
}
-
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/Scribe.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/Scribe.java
index 7a35655c1f8..8bc32d8396d 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/Scribe.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/Scribe.java
@@ -7,110 +7,106 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
/**
- *
- * This class is responsible for the string concatination and the management of
+ * This class is responsible for the string concatenation and the management of
* the indentations.
*
* @since 5.0
* @author Emanuel Graf IFS
- *
*/
public class Scribe {
-
-
private int indentationLevel = 0;
- private int indentationSize = 4; //HSR tcorbat: could be a tab character too - this is not a very elegant solution
- private StringBuffer buffer = new StringBuffer();
+ // Any positive indentation size is good enough since the code is going to be formatted anyway.
+ private int indentationSize = 4;
+ private StringBuilder buffer = new StringBuilder();
private boolean isAtLineBeginning = true;
private String newLine = System.getProperty("line.separator"); //$NON-NLS-1$
- private String givenIndentation = null;
+ private String givenIndentation;
- private boolean noNewLine = false;
- private boolean noSemicolon = false;
-
- public void newLine(){
- if(!noNewLine) {
+ private boolean skipLineBreaks;
+ private boolean skipSemicolons;
+
+ public void newLine() {
+ if (!skipLineBreaks) {
isAtLineBeginning = true;
buffer.append(getNewline());
}
}
-
- private void indent(){
- if( givenIndentation != null ){
- buffer.append( givenIndentation );
+
+ private void indent() {
+ if (givenIndentation != null) {
+ buffer.append(givenIndentation);
}
printSpaces(indentationLevel * indentationSize);
}
-
- private void indentIfNewLine(){
- if(isAtLineBeginning){
+
+ private void indentIfNewLine() {
+ if (isAtLineBeginning) {
isAtLineBeginning = false;
indent();
}
}
-
- private String getNewline(){
+
+ private String getNewline() {
return newLine;
}
-
- public void print(String code){
+
+ public void print(String code) {
indentIfNewLine();
buffer.append(code);
}
-
+
public void println(String code) {
print(code);
newLine();
}
-
+
public void print(String code, String code2) {
print(code);
buffer.append(code2);
}
-
+
public void println(String code, String code2) {
print(code, code2);
newLine();
}
-
- public void println(String code , char[] code2) {
+
+ public void println(String code, char[] code2) {
print(code);
buffer.append(code2);
newLine();
}
-
- public void printSpaces(int number){
+
+ public void printSpaces(int number) {
indentIfNewLine();
- for(int i = 0; i < number; ++i){
+ for (int i = 0; i < number; ++i) {
printSpace();
}
}
-
+
public void noSemicolon() {
- noSemicolon = true;
+ skipSemicolons = true;
}
-
- public void printSemicolon(){
- if(!noSemicolon) {
+
+ public void printSemicolon() {
+ if (!skipSemicolons) {
indentIfNewLine();
buffer.append(';');
- }
- else {
- noSemicolon = false;
+ } else {
+ skipSemicolons = false;
}
}
-
+
@Override
- public String toString(){
+ public String toString() {
return buffer.toString();
}
-
- public void print (char code) {
+
+ public void print(char code) {
indentIfNewLine();
buffer.append(code);
}
@@ -119,19 +115,19 @@ public class Scribe {
indentIfNewLine();
buffer.append(code);
}
-
+
public void println(char[] code) {
print(code);
newLine();
}
-
- public void printStringSpace(String code){
+
+ public void printStringSpace(String code) {
print(code);
printSpace();
}
/**
- * Prints a { to the Buffer an increases the Indentationlevel.
+ * Prints a { to the buffer an increases the indentation level.
*/
public void printLBrace() {
print('{');
@@ -139,40 +135,40 @@ public class Scribe {
}
/**
- * Prints a } to the Buffer an decrease the Indentationlevel.
+ * Prints a } to the buffer an decrease the indentation level.
*/
public void printRBrace() {
--indentationLevel;
print('}');
}
-
- public void incrementIndentationLevel(){
+
+ public void incrementIndentationLevel() {
++indentationLevel;
}
-
- public void decrementIndentationLevel(){
- if(indentationLevel>0) {
+
+ public void decrementIndentationLevel() {
+ if (indentationLevel > 0) {
--indentationLevel;
}
}
-
- protected void noNewLines(){
- noNewLine = true;
+
+ protected void noNewLines() {
+ skipLineBreaks = true;
}
-
- protected void newLines(){
- noNewLine = false;
+
+ protected void newLines() {
+ skipLineBreaks = false;
}
-
+
public void newLine(int i) {
- while(i > 0) {
+ while (i > 0) {
newLine();
--i;
}
}
public void printSpace() {
- buffer.append(' ');
+ buffer.append(' ');
}
public String getGivenIndentation() {
@@ -184,6 +180,6 @@ public class Scribe {
}
public void cleanCache() {
- buffer = new StringBuffer();
+ buffer = new StringBuilder();
}
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/StatementWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/StatementWriter.java
index 2e1e6dcafd4..ac8c6f21f37 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/StatementWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/StatementWriter.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
@@ -46,30 +46,27 @@ import org.eclipse.cdt.internal.core.dom.rewrite.util.FileHelper;
import org.eclipse.core.resources.IFile;
/**
- *
* Generates source code of statement nodes. The actual string operations are delegated
* to the Scribe class.
*
* @see Scribe
* @see IASTStatement
* @author Emanuel Graf IFS
- *
*/
-public class StatementWriter extends NodeWriter{
-
+public class StatementWriter extends NodeWriter {
private static final String DEFAULT = "default:"; //$NON-NLS-1$
private static final String CASE = "case "; //$NON-NLS-1$
- private static final String WHILE = "while("; //$NON-NLS-1$
+ private static final String WHILE = "while ("; //$NON-NLS-1$
private static final String TRY = "try "; //$NON-NLS-1$
- private static final String CATCH = "catch("; //$NON-NLS-1$
+ private static final String CATCH = "catch ("; //$NON-NLS-1$
private static final String RETURN = "return"; //$NON-NLS-1$
private static final String GOTO = "goto "; //$NON-NLS-1$
private static final String CONTINUE = "continue"; //$NON-NLS-1$
private static final String BREAK = "break"; //$NON-NLS-1$
private static final String ELSE = "else"; //$NON-NLS-1$
- private static final String IF = "if("; //$NON-NLS-1$
- private static final String FOR = "for("; //$NON-NLS-1$
- private static final String DO_WHILE = " while("; //$NON-NLS-1$
+ private static final String IF = "if ("; //$NON-NLS-1$
+ private static final String FOR = "for ("; //$NON-NLS-1$
+ private static final String DO_WHILE = " while ("; //$NON-NLS-1$
private static final String DO = "do"; //$NON-NLS-1$
private static final String SWITCH_BRACKET = "switch ("; //$NON-NLS-1$
private boolean compoundNoNewLine = false;
@@ -77,15 +74,16 @@ public class StatementWriter extends NodeWriter{
private boolean decrementIndentationLevelOneMore = false;
private final DeclarationWriter declWriter;
- public StatementWriter(Scribe scribe, ASTVisitor visitor, NodeCommentMap commentMap) {
+ public StatementWriter(Scribe scribe, ASTWriterVisitor visitor, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap);
declWriter = new DeclarationWriter(scribe, visitor, commentMap);
}
/**
+ * Prints a statement.
*
- * @param statement
- * @param newLine if true print a newline if statment usually have one.
+ * @param statement the statement
+ * @param newLine if true print a newline if statement usually have one.
* @return {@link ASTVisitor#PROCESS_SKIP}
*/
protected int writeStatement(IASTStatement statement, boolean newLine) {
@@ -114,14 +112,14 @@ public class StatementWriter extends NodeWriter{
} else if (statement instanceof IASTCaseStatement) {
writeCaseStatement((IASTCaseStatement) statement);
// usually newLine
- }else if (statement instanceof IASTDefaultStatement) {
+ } else if (statement instanceof IASTDefaultStatement) {
writeDefaultStatement((IASTDefaultStatement)statement);
- } else if (statement instanceof IASTContinueStatement){
+ } else if (statement instanceof IASTContinueStatement) {
writeContinueStatement((IASTContinueStatement)statement);
// usually newLine
} else if (statement instanceof IASTCompoundStatement) {
writeCompoundStatement((IASTCompoundStatement) statement);
- if(compoundNoNewLine){
+ if (compoundNoNewLine) {
newLine = false;
compoundNoNewLine = false;
}
@@ -135,7 +133,7 @@ public class StatementWriter extends NodeWriter{
writeIfStatement((IASTIfStatement) statement);
newLine = false;
} else if (statement instanceof IASTWhileStatement) {
- writeWhileStatement( (IASTWhileStatement) statement );
+ writeWhileStatement((IASTWhileStatement) statement);
newLine = false;
} else if (statement instanceof IASTForStatement) {
writeForStatement((IASTForStatement) statement);
@@ -156,13 +154,10 @@ public class StatementWriter extends NodeWriter{
throw new ProblemRuntimeException((IASTProblemStatement)statement);
}
- if(hasTrailingComments(statement)) {
+ if (hasTrailingComments(statement)) {
writeTrailingComments(statement, newLine);
- }
- else{
- if(newLine){
- scribe.newLine();
- }
+ } else if (newLine) {
+ scribe.newLine();
}
return ASTVisitor.PROCESS_SKIP;
@@ -179,32 +174,31 @@ public class StatementWriter extends NodeWriter{
scribe.printSemicolon();
}
- private void writeForStatement(IASTForStatement forStatment) {
+ private void writeForStatement(IASTForStatement forStatement) {
scribe.noNewLines();
scribe.print(FOR);
- writeStatement(forStatment.getInitializerStatement(),false);
- if (forStatment instanceof ICPPASTForStatement) {
- ICPPASTForStatement cppForStatment = (ICPPASTForStatement) forStatment;
+ writeStatement(forStatement.getInitializerStatement(),false);
+ if (forStatement instanceof ICPPASTForStatement) {
+ ICPPASTForStatement cppForStatment = (ICPPASTForStatement) forStatement;
IASTDeclaration cppConditionDeclaration = cppForStatment.getConditionDeclaration();
- if(cppConditionDeclaration == null) {
+ if (cppConditionDeclaration == null) {
visitNodeIfNotNull(cppForStatment.getConditionExpression());
scribe.printSemicolon();
} else {
cppConditionDeclaration.accept(visitor);
}
-
} else {
- if(forStatment.getConditionExpression() != null) {
- forStatment.getConditionExpression().accept(visitor);
+ if (forStatement.getConditionExpression() != null) {
+ forStatement.getConditionExpression().accept(visitor);
scribe.printSemicolon();
}
}
- visitNodeIfNotNull(forStatment.getIterationExpression());
+ visitNodeIfNotNull(forStatement.getIterationExpression());
scribe.print(')');
scribe.newLines();
nextCompoundNoNewLine();
- writeBodyStatement(forStatment.getBody(), false);
+ writeBodyStatement(forStatement.getBody(), false);
}
private void writeForStatement(ICPPASTRangeBasedForStatement forStatment) {
@@ -225,7 +219,7 @@ public class StatementWriter extends NodeWriter{
if (ifStatement instanceof ICPPASTIfStatement) {
ICPPASTIfStatement cppIfStatment = (ICPPASTIfStatement) ifStatement;
- if(cppIfStatment.getConditionDeclaration() == null) {
+ if (cppIfStatment.getConditionDeclaration() == null) {
cppIfStatment.getConditionExpression().accept(visitor);
} else {
writeDeclarationWithoutSemicolon(cppIfStatment.getConditionDeclaration());
@@ -238,17 +232,16 @@ public class StatementWriter extends NodeWriter{
scribe.newLines();
nextCompoundNoNewLine();
IASTStatement elseClause = ifStatement.getElseClause();
- writeBodyStatement(ifStatement.getThenClause(), elseClause != null ? true : false);
+ writeBodyStatement(ifStatement.getThenClause(), elseClause != null);
- if(elseClause != null){
+ if (elseClause != null) {
scribe.print(ELSE);
nextCompoundNoNewLine();
writeBodyStatement(elseClause, false);
}
}
- protected void writeDeclarationWithoutSemicolon(
- IASTDeclaration declaration) {
+ protected void writeDeclarationWithoutSemicolon(IASTDeclaration declaration) {
declWriter.writeDeclaration(declaration, false);
}
@@ -279,7 +272,7 @@ public class StatementWriter extends NodeWriter{
scribe.noNewLines();
scribe.print(RETURN);
IASTExpression returnValue = returnStatement.getReturnValue();
- if(returnValue != null){
+ if (returnValue != null) {
scribe.printSpaces(1);
returnValue.accept(visitor);
}
@@ -327,7 +320,7 @@ public class StatementWriter extends NodeWriter{
scribe.noNewLines();
if (whileStatment instanceof ICPPASTWhileStatement) {
ICPPASTWhileStatement cppWhileStatment = (ICPPASTWhileStatement) whileStatment;
- if(cppWhileStatment.getConditionDeclaration() == null) {
+ if (cppWhileStatment.getConditionDeclaration() == null) {
cppWhileStatment.getCondition().accept(visitor);
} else {
writeDeclarationWithoutSemicolon(cppWhileStatment.getConditionDeclaration());
@@ -344,7 +337,7 @@ public class StatementWriter extends NodeWriter{
private void writeCaseStatement(IASTCaseStatement caseStatement) {
nextCompoundIndentationLevelOneMore();
- if(!switchIsNew){
+ if (!switchIsNew) {
scribe.decrementIndentationLevel();
}
scribe.print(CASE);
@@ -361,7 +354,7 @@ public class StatementWriter extends NodeWriter{
scribe.noNewLines();
if (switchStatement instanceof ICPPASTSwitchStatement) {
ICPPASTSwitchStatement cppSwitchStatement = (ICPPASTSwitchStatement) switchStatement;
- if(cppSwitchStatement.getControllerDeclaration() == null) {
+ if (cppSwitchStatement.getControllerDeclaration() == null) {
cppSwitchStatement.getControllerExpression().accept(visitor);
} else {
declWriter.writeDeclaration(cppSwitchStatement.getControllerDeclaration(), false);
@@ -380,7 +373,7 @@ public class StatementWriter extends NodeWriter{
private void writeDefaultStatement(IASTDefaultStatement defaultStatement) {
nextCompoundIndentationLevelOneMore();
- if(!switchIsNew){
+ if (!switchIsNew) {
scribe.decrementIndentationLevel();
}
scribe.print(DEFAULT);
@@ -395,11 +388,11 @@ public class StatementWriter extends NodeWriter{
statements.accept(visitor);
}
- if(hasFreestandingComments(compoundStatement)) {
+ if (hasFreestandingComments(compoundStatement)) {
writeFreeStandingComments(compoundStatement);
}
- if(decrementIndentationLevelOneMore){
+ if (decrementIndentationLevelOneMore) {
scribe.decrementIndentationLevel();
decrementIndentationLevelOneMore = false;
}
@@ -411,14 +404,14 @@ public class StatementWriter extends NodeWriter{
}
protected void writeBodyStatement(IASTStatement statement, boolean isDoStatement) {
- if (statement instanceof IASTCompoundStatement){
+ if (statement instanceof IASTCompoundStatement) {
//TODO hsr existiert noch eine methode
statement.accept(visitor);
- if(!isDoStatement){
+ if (!isDoStatement) {
scribe.newLine();
}
compoundNoNewLine = false;
- } else if (statement instanceof IASTNullStatement){
+ } else if (statement instanceof IASTNullStatement) {
statement.accept(visitor);
scribe.newLine();
} else {
@@ -426,32 +419,29 @@ public class StatementWriter extends NodeWriter{
scribe.newLine();
statement.accept(visitor);
scribe.decrementIndentationLevel();
- scribe.newLine();
}
}
-
+
/**
* Write no new Line after the next Compound-Statement
- *
*/
- protected void nextCompoundNoNewLine(){
+ protected void nextCompoundNoNewLine() {
compoundNoNewLine = true;
}
/**
* Indent one time more at the end (before the closing Brackets)
* of a Compound-Statement
- *
*/
- protected void nextCompoundIndentationLevelOneMore(){
+ protected void nextCompoundIndentationLevelOneMore() {
decrementIndentationLevelOneMore = true;
}
protected int writeMixedStatement(IASTStatement statement) {
- IFile file = FileHelper.getIFilefromIASTNode(statement);
+ IFile file = FileHelper.getFileFromNode(statement);
int offset = statement.getFileLocation().getNodeOffset();
int length = statement.getFileLocation().getNodeLength();
- String code =FileContentHelper.getContent(file, offset, length);
+ String code = FileContentHelper.getContent(file, offset, length);
scribe.println(code);
return ASTVisitor.PROCESS_SKIP;
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/TemplateParameterWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/TemplateParameterWriter.java
index f1265c5bbd0..64d11679574 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/TemplateParameterWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/astwriter/TemplateParameterWriter.java
@@ -11,7 +11,6 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTParameterDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeTemplateParameter;
@@ -35,7 +34,7 @@ public class TemplateParameterWriter extends NodeWriter {
* @param scribe
* @param visitor
*/
- public TemplateParameterWriter(Scribe scribe, ASTVisitor visitor, NodeCommentMap commentMap) {
+ public TemplateParameterWriter(Scribe scribe, ASTWriterVisitor visitor, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ASTModificationHelper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ASTModificationHelper.java
index 186f399fb41..3354844d4d1 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ASTModificationHelper.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ASTModificationHelper.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator;
@@ -28,30 +28,27 @@ import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.ContainerNode;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
public class ASTModificationHelper {
-
private final ModificationScopeStack modificationStore;
public ASTModificationHelper(ModificationScopeStack stack) {
this.modificationStore = stack;
}
-
- public T[] createModifiedChildArray(IASTNode parent, T[] unmodifiedChildren, Class clazz, NodeCommentMap commentMap){
+ public T[] createModifiedChildArray(IASTNode parent, T[] unmodifiedChildren, Class clazz, NodeCommentMap commentMap) {
ArrayList modifiedChildren = new ArrayList(Arrays.asList(unmodifiedChildren));
- for(ASTModification parentModification : modificationsForNode(parent)){
- switch(parentModification.getKind()){
+ for (ASTModification parentModification : modificationsForNode(parent)) {
+ switch (parentModification.getKind()) {
case APPEND_CHILD:
IASTNode newNode = parentModification.getNewNode();
T appendedTNode = cast(newNode, clazz);
if (appendedTNode != null) {
modifiedChildren.add(appendedTNode);
- }
- else if (newNode instanceof ContainerNode){
+ } else if (newNode instanceof ContainerNode) {
ContainerNode nodeContainer = (ContainerNode) newNode;
- for(IASTNode currentNode : nodeContainer.getNodes()){
+ for (IASTNode currentNode : nodeContainer.getNodes()) {
T tnode= cast(currentNode, clazz);
- if(tnode != null){
+ if (tnode != null) {
modifiedChildren.add(tnode);
}
}
@@ -71,6 +68,7 @@ public class ASTModificationHelper {
break;
case REPLACE:
+ break;
}
}
@@ -145,42 +143,35 @@ public class ASTModificationHelper {
@SuppressWarnings("unchecked")
private T cast(IASTNode node, Class clazz) {
- if (clazz.isInstance(node)){
+ if (clazz.isInstance(node)) {
return (T) node;
}
return null;
}
-
- public List modificationsForNode(
- IASTNode targetNode) {
+ public List modificationsForNode(IASTNode targetNode) {
List modificationsForNode;
- if(modificationStore.getModifiedNodes().contains(targetNode)){
+ if (modificationStore.getModifiedNodes().contains(targetNode)) {
modificationsForNode = modificationStore.getModificationsForNode(targetNode);
- }
- else{
+ } else {
modificationsForNode = Collections.emptyList();
}
- return modificationsForNode;
-
+ return modificationsForNode;
}
-
-
+
public IASTInitializer getInitializer(IASTDeclarator decl) {
IASTInitializer initializer = decl.getInitializer();
- if(initializer != null){
- for(ASTModification childModification : modificationsForNode(initializer)){
- switch(childModification.getKind()){
+ if (initializer != null) {
+ for (ASTModification childModification : modificationsForNode(initializer)) {
+ switch (childModification.getKind()) {
case REPLACE:
- if(childModification.getNewNode() instanceof IASTInitializer){
+ if (childModification.getNewNode() instanceof IASTInitializer) {
return (IASTInitializer)childModification.getNewNode();
} else if (childModification.getNewNode() == null) {
return null;
}
throw new UnhandledASTModificationException(childModification);
-
-
case INSERT_BEFORE:
throw new UnhandledASTModificationException(childModification);
@@ -188,13 +179,11 @@ public class ASTModificationHelper {
throw new UnhandledASTModificationException(childModification);
}
}
- }
- else
- {
- for(ASTModification parentModification : modificationsForNode(decl)){
- if(parentModification.getKind() == ModificationKind.APPEND_CHILD){
+ } else {
+ for (ASTModification parentModification : modificationsForNode(decl)) {
+ if (parentModification.getKind() == ModificationKind.APPEND_CHILD) {
IASTNode newNode = parentModification.getNewNode();
- if(newNode instanceof IASTInitializer){
+ if (newNode instanceof IASTInitializer) {
return (IASTInitializer) newNode;
}
}
@@ -203,17 +192,15 @@ public class ASTModificationHelper {
return initializer;
}
-
@SuppressWarnings("unchecked")
public T getNodeAfterReplacement(T replacedNode) {
List modifications = modificationsForNode(replacedNode);
- for(ASTModification currentModification : modifications){
- try{
- if(currentModification.getKind() == ModificationKind.REPLACE){
+ for (ASTModification currentModification : modifications) {
+ try {
+ if (currentModification.getKind() == ModificationKind.REPLACE) {
return (T) currentModification.getNewNode();
}
- }
- catch(ClassCastException e){
+ } catch (ClassCastException e) {
throw new UnhandledASTModificationException(currentModification);
}
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ChangeGenerator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ChangeGenerator.java
index 2c0b275e8df..d8d2b173c00 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ChangeGenerator.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ChangeGenerator.java
@@ -9,16 +9,23 @@
* Contributors:
* Institute for Software - initial API and implementation
* Markus Schorn (Wind River Systems)
+ * Sergey Prigogin (Google)
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.ToolFactory;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
import org.eclipse.cdt.core.dom.ast.IASTComment;
+import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
+import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
@@ -31,7 +38,10 @@ import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTStatement;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition;
+import org.eclipse.cdt.core.formatter.CodeFormatter;
+import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
+import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification.ModificationKind;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationMap;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModificationStore;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTRewriteAnalyzer;
@@ -41,16 +51,26 @@ import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
import org.eclipse.cdt.internal.core.dom.rewrite.util.FileContentHelper;
import org.eclipse.cdt.internal.core.dom.rewrite.util.FileHelper;
import org.eclipse.cdt.internal.core.resources.ResourceLookup;
+import org.eclipse.cdt.internal.formatter.CCodeFormatter;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.TextUtilities;
import org.eclipse.ltk.core.refactoring.Change;
import org.eclipse.ltk.core.refactoring.CompositeChange;
import org.eclipse.ltk.core.refactoring.TextFileChange;
import org.eclipse.text.edits.DeleteEdit;
import org.eclipse.text.edits.InsertEdit;
+import org.eclipse.text.edits.MalformedTreeException;
import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.text.edits.ReplaceEdit;
+import org.eclipse.text.edits.TextEdit;
import org.eclipse.text.edits.TextEditGroup;
public class ChangeGenerator extends ASTVisitor {
@@ -93,8 +113,10 @@ public class ChangeGenerator extends ASTVisitor {
initParentModList();
rootNode.accept(pathProvider);
for (IFile currentFile : changes.keySet()) {
+ MultiTextEdit edit = changes.get(currentFile);
+ edit = formatChangedCode(edit, currentFile);
TextFileChange subchange= ASTRewriteAnalyzer.createCTextFileChange(currentFile);
- subchange.setEdit(changes.get(currentFile));
+ subchange.setEdit(edit);
change.add(subchange);
}
}
@@ -130,6 +152,63 @@ public class ChangeGenerator extends ASTVisitor {
return modifiedNodeParent;
}
+ /**
+ * Applies the C++ code formatter to the code affected by refactoring.
+ *
+ * @param edit The text edit produced by refactoring.
+ * @param file The file being modified.
+ * @return The text edit containing formatted refactoring changes, or the original text edit
+ * in case of errors.
+ */
+ private MultiTextEdit formatChangedCode(MultiTextEdit edit, IFile file) {
+ String code;
+ try {
+ code = FileContentHelper.getContent(file, 0);
+ } catch (IOException e) {
+ CCorePlugin.log(e);
+ return edit;
+ } catch (CoreException e) {
+ CCorePlugin.log(e);
+ return edit;
+ }
+ IDocument document = new Document(code);
+ try {
+ TextEdit tempEdit = edit.copy();
+ tempEdit.apply(document, TextEdit.UPDATE_REGIONS);
+ TextEdit[] edits = tempEdit.getChildren();
+ IRegion[] regions = new IRegion[edits.length];
+ for (int i = 0; i < edits.length; i++) {
+ regions[i] = edits[i].getRegion();
+ }
+ ICProject project = CCorePlugin.getDefault().getCoreModel().create(file.getProject());
+ Map options = project.getOptions(true);
+ CodeFormatter formatter = ToolFactory.createCodeFormatter(options);
+ code = document.get();
+ TextEdit[] formatEdits = formatter.format(CCodeFormatter.K_TRANSLATION_UNIT, code,
+ regions, TextUtilities.getDefaultLineDelimiter(document));
+ MultiTextEdit resultEdit = new MultiTextEdit();
+ edits = edit.getChildren();
+ for (int i = 0; i < edits.length; i++) {
+ IRegion region = regions[i];
+ int offset = region.getOffset();
+ TextEdit formatEdit = formatEdits[i];
+ formatEdit.moveTree(-offset);
+ document = new Document(code.substring(offset, offset + region.getLength()));
+ formatEdit.apply(document, TextEdit.NONE);
+ TextEdit textEdit = edits[i];
+ resultEdit.addChild(
+ new ReplaceEdit(textEdit.getOffset(), textEdit.getLength(), document.get()));
+ }
+ return resultEdit;
+ } catch (MalformedTreeException e) {
+ CCorePlugin.log(e);
+ return edit;
+ } catch (BadLocationException e) {
+ CCorePlugin.log(e);
+ return edit;
+ }
+ }
+
@Override
public int visit(IASTTranslationUnit translationUnit) {
if (hasChangedChild(translationUnit)) {
@@ -145,11 +224,6 @@ public class ChangeGenerator extends ASTVisitor {
return super.leave(tu);
}
- private int getOffsetForNodeFile(IASTNode rootNode) {
- Integer offset = sourceOffsets.get(rootNode.getFileLocation().getFileName());
- return offset == null ? 0 : offset.intValue();
- }
-
@Override
public int visit(IASTDeclaration declaration) {
if (hasChangedChild(declaration)) {
@@ -160,33 +234,126 @@ public class ChangeGenerator extends ASTVisitor {
}
private void synthTreatment(IASTNode synthNode) {
- synthTreatment(synthNode, null);
- }
-
- private void synthTreatment(IASTNode synthNode, String fileScope) {
- String indent = getIndent(synthNode);
- ASTWriter synthWriter = new ASTWriter(indent);
- synthWriter.setModificationStore(modificationStore);
-
- String synthSource = synthWriter.write(synthNode, fileScope, commentMap);
-
+ ChangeGeneratorWriterVisitor writer =
+ new ChangeGeneratorWriterVisitor(modificationStore, commentMap);
+ synthNode.accept(writer);
+ String synthSource = writer.toString();
createChange(synthNode, synthSource);
-
+
IASTFileLocation fileLocation = synthNode.getFileLocation();
int newOffset = fileLocation.getNodeOffset() + fileLocation.getNodeLength();
sourceOffsets.put(fileLocation.getFileName(), Integer.valueOf(newOffset));
}
+ private void handleAppends(IASTNode node) {
+ ChangeGeneratorWriterVisitor writer =
+ new ChangeGeneratorWriterVisitor(modificationStore, commentMap);
+ List modifications = modificationParent.get(node);
+ ReplaceEdit anchor = getAppendAnchor(node);
+ Assert.isNotNull(anchor);
+ IASTNode precedingNode = getLastNodeBeforeAppendPoint(node);
+ if (precedingNode != null &&
+ ASTWriter.requireBlankLineInBetween(precedingNode, modifications.get(0).getNewNode())) {
+ writer.newLine();
+ }
+ for (ASTModification modification : modifications) {
+ IASTNode newNode = modification.getNewNode();
+ newNode.accept(writer);
+ }
+ String code = writer.toString();
+ IFile file = FileHelper.getFileFromNode(node);
+ MultiTextEdit parentEdit = getEdit(node, file);
+ ReplaceEdit edit = new ReplaceEdit(anchor.getOffset(), anchor.getLength(),
+ code + anchor.getText());
+ parentEdit.addChild(edit);
+ IASTFileLocation fileLocation = node.getFileLocation();
+ int newOffset = fileLocation.getNodeOffset() + fileLocation.getNodeLength();
+ sourceOffsets.put(fileLocation.getFileName(), Integer.valueOf(newOffset));
+ }
+
+ private IASTNode getLastNodeBeforeAppendPoint(IASTNode node) {
+ IASTNode[] children;
+ if (node instanceof IASTCompositeTypeSpecifier) {
+ children = ((IASTCompositeTypeSpecifier) node).getDeclarations(true);
+ } else {
+ children = node.getChildren();
+ }
+ return children.length > 0 ? children[children.length - 1] : null;
+ }
+
+ private boolean isAppendable(Iterable modifications) {
+ for (ASTModification modification : modifications) {
+ if (!isAppendable(modification))
+ return false;
+ }
+ return true;
+ }
+
+ private boolean isAppendable(ASTModification modification) {
+ if (modification.getKind() != ModificationKind.APPEND_CHILD)
+ return false;
+ IASTNode node = modification.getNewNode();
+ return node instanceof IASTDeclaration || node instanceof IASTStatement;
+ }
+
+ /**
+ * Returns a replace edit whose offset is the position where child appended nodes should be
+ * inserted at. The text contains the content of the code region that will be disturbed by
+ * the insertion.
+ * @param node The node to append children to.
+ * @return a ReplaceEdit object, or null if the node does not support appending
+ * children to it.
+ */
+ private ReplaceEdit getAppendAnchor(IASTNode node) {
+ if (!(node instanceof IASTCompositeTypeSpecifier ||
+ node instanceof IASTCompoundStatement ||
+ node instanceof ICPPASTNamespaceDefinition)) {
+ return null;
+ }
+ IFile file = FileHelper.getFileFromNode(node);
+ String code = originalCodeOfNode(node, file);
+ IASTFileLocation location = node.getFileLocation();
+ int pos = location.getNodeOffset() + location.getNodeLength();
+ int len = code.endsWith("}") ? 1 : 0; //$NON-NLS-1$
+ int startOfLine = skipPrecedingBlankLines(code, code.length() - len);
+ if (startOfLine < 0) {
+ // Include the closing brace in the region that will be reformatted.
+ return new ReplaceEdit(pos - len, len, code.substring(code.length() - len));
+ }
+ return new ReplaceEdit(location.getNodeOffset() + startOfLine, 0, ""); //$NON-NLS-1$
+ }
+
+ /**
+ * Skips blank lines preceding the given position.
+ * @param text the text to scan
+ * @param pos the position after that blank lines.
+ * @return the beginning of the first blank line, or -1 if the beginning of the line
+ * corresponding to the given position contains non-whitespace characters.
+ */
+ private int skipPrecedingBlankLines(String text, int pos) {
+ int lineStart = -1;
+ while (--pos >= 0) {
+ char c = text.charAt(pos);
+ if (c == '\n') {
+ lineStart = pos + 1;
+ } else if (!Character.isWhitespace(c)) {
+ break;
+ }
+ }
+ return lineStart;
+ }
+
private void synthTreatment(IASTTranslationUnit synthTU) {
ASTWriter synthWriter = new ASTWriter();
synthWriter.setModificationStore(modificationStore);
for (ASTModification modification : modificationParent.get(synthTU)) {
- IASTFileLocation targetLocation = modification.getTargetNode().getFileLocation();
+ IASTNode targetNode = modification.getTargetNode();
+ IASTFileLocation targetLocation = targetNode.getFileLocation();
String currentFile = targetLocation.getFileName();
IPath implPath = new Path(currentFile);
IFile relevantFile= ResourceLookup.selectFileForLocation(implPath, null);
- if (relevantFile == null || !relevantFile.exists()) { // if not in workspace or local file system
+ if (relevantFile == null || !relevantFile.exists()) { // If not in workspace or local file system
throw new UnhandledASTModificationException(modification);
}
MultiTextEdit edit;
@@ -196,7 +363,7 @@ public class ChangeGenerator extends ASTVisitor {
edit = new MultiTextEdit();
changes.put(relevantFile, edit);
}
- String newNodeCode = synthWriter.write(modification.getNewNode(), null, commentMap);
+ String newNodeCode = synthWriter.write(modification.getNewNode(), commentMap);
switch (modification.getKind()) {
case REPLACE:
@@ -204,18 +371,20 @@ public class ChangeGenerator extends ASTVisitor {
targetLocation.getNodeLength(), newNodeCode));
break;
case INSERT_BEFORE:
- edit.addChild(new InsertEdit(getOffsetIncludingComments(modification.getTargetNode()),
- newNodeCode));
+ if (ASTWriter.requireBlankLineInBetween(modification.getNewNode(), targetNode)) {
+ newNodeCode = newNodeCode + "\n"; //$NON-NLS-1$
+ }
+ edit.addChild(new InsertEdit(getOffsetIncludingComments(targetNode), newNodeCode));
break;
case APPEND_CHILD:
- if (modification.getTargetNode() instanceof IASTTranslationUnit &&
- ((IASTTranslationUnit)modification.getTargetNode()).getDeclarations().length > 0) {
- IASTTranslationUnit tu = (IASTTranslationUnit)modification.getTargetNode();
- IASTDeclaration lastDecl = tu.getDeclarations()[tu.getDeclarations().length -1];
+ if (targetNode instanceof IASTTranslationUnit &&
+ ((IASTTranslationUnit) targetNode).getDeclarations().length > 0) {
+ IASTTranslationUnit tu = (IASTTranslationUnit) targetNode;
+ IASTDeclaration lastDecl = tu.getDeclarations()[tu.getDeclarations().length - 1];
targetLocation = lastDecl.getFileLocation();
}
String lineDelimiter = FileHelper.determineLineDelimiter(
- FileHelper.getIFilefromIASTNode(modification.getTargetNode()));
+ FileHelper.getFileFromNode(targetNode));
edit.addChild(new InsertEdit(targetLocation.getNodeOffset() + targetLocation.getNodeLength(),
lineDelimiter + lineDelimiter + newNodeCode));
break;
@@ -224,31 +393,33 @@ public class ChangeGenerator extends ASTVisitor {
}
private void createChange(IASTNode synthNode, String synthSource) {
- IFile relevantFile = FileHelper.getIFilefromIASTNode(synthNode);
-
- String originalCode = originalCodeOfNode(synthNode);
+ IFile relevantFile = FileHelper.getFileFromNode(synthNode);
+ String originalCode = originalCodeOfNode(synthNode, relevantFile);
CodeComparer codeComparer = new CodeComparer(originalCode, synthSource);
-
- MultiTextEdit edit;
- if (changes.containsKey(relevantFile)) {
- edit = changes.get(relevantFile);
- } else {
- edit = new MultiTextEdit();
- changes.put(relevantFile, edit);
- }
-
- codeComparer.createChange(edit, synthNode);
+ codeComparer.createChange(getEdit(synthNode, relevantFile), synthNode);
}
- public String originalCodeOfNode(IASTNode node) {
- if (node.getFileLocation() != null) {
- IFile sourceFile = FileHelper.getIFilefromIASTNode(node);
- int nodeOffset = getOffsetIncludingComments(node);
- int nodeLength = getNodeLengthIncludingComments(node);
-
- return FileContentHelper.getContent(sourceFile, nodeOffset, nodeLength);
+ private MultiTextEdit getEdit(IASTNode modifiedNode, IFile file) {
+ MultiTextEdit edit = changes.get(file);
+ if (edit == null) {
+ edit = new MultiTextEdit();
+ changes.put(file, edit);
}
- return null;
+ TextEditGroup editGroup = new TextEditGroup(Messages.ChangeGenerator_group);
+ for (ASTModification currentModification : modificationParent.get(modifiedNode)) {
+ if (currentModification.getAssociatedEditGroup() != null) {
+ editGroup = currentModification.getAssociatedEditGroup();
+ edit.addChildren(editGroup.getTextEdits());
+ break;
+ }
+ }
+ return edit;
+ }
+
+ private String originalCodeOfNode(IASTNode node, IFile sourceFile) {
+ int nodeOffset = getOffsetIncludingComments(node);
+ int nodeLength = getNodeLengthIncludingComments(node);
+ return FileContentHelper.getContent(sourceFile, nodeOffset, nodeLength);
}
private int getNodeLengthIncludingComments(IASTNode node) {
@@ -290,23 +461,15 @@ public class ChangeGenerator extends ASTVisitor {
return nodeOffset;
}
- private String getIndent(IASTNode nextNode) {
- IASTFileLocation fileLocation = nextNode.getFileLocation();
- int length = fileLocation.getNodeOffset() - getOffsetForNodeFile(nextNode);
-
- String originalSource = FileContentHelper.getContent(FileHelper.getIFilefromIASTNode(nextNode),
- getOffsetForNodeFile(nextNode), length);
- StringBuilder indent = new StringBuilder(originalSource);
- indent.reverse();
- String lastline = indent.substring(0, Math.max(indent.indexOf("\n"), 0)); //$NON-NLS-1$
- if (lastline.trim().length() == 0) {
- return lastline;
- }
- return ""; //$NON-NLS-1$
+ private boolean hasChangedChild(IASTNode node) {
+ return modificationParent.containsKey(node);
}
- private boolean hasChangedChild(IASTNode parent) {
- return modificationParent.containsKey(parent);
+ private boolean hasAppendsOnly(IASTNode node) {
+ List modifications = modificationParent.get(node);
+ if (modifications == null)
+ return false;
+ return isAppendable(modifications);
}
@Override
@@ -329,22 +492,38 @@ public class ChangeGenerator extends ASTVisitor {
@Override
public int visit(ICPPASTNamespaceDefinition namespaceDefinition) {
- if (hasChangedChild(namespaceDefinition)) {
+ if (hasChangedChild(namespaceDefinition) && !hasAppendsOnly(namespaceDefinition)) {
synthTreatment(namespaceDefinition);
return ASTVisitor.PROCESS_SKIP;
}
return super.visit(namespaceDefinition);
}
+ @Override
+ public int leave(ICPPASTNamespaceDefinition namespaceDefinition) {
+ if (hasAppendsOnly(namespaceDefinition)) {
+ handleAppends(namespaceDefinition);
+ }
+ return super.leave(namespaceDefinition);
+ }
+
@Override
public int visit(IASTDeclSpecifier declSpec) {
- if (hasChangedChild(declSpec)) {
+ if (hasChangedChild(declSpec) && !hasAppendsOnly(declSpec)) {
synthTreatment(declSpec);
return ASTVisitor.PROCESS_SKIP;
}
return super.visit(declSpec);
}
+ @Override
+ public int leave(IASTDeclSpecifier declSpec) {
+ if (hasAppendsOnly(declSpec)) {
+ handleAppends(declSpec);
+ }
+ return super.leave(declSpec);
+ }
+
@Override
public int visit(IASTExpression expression) {
if (hasChangedChild(expression)) {
@@ -383,13 +562,21 @@ public class ChangeGenerator extends ASTVisitor {
@Override
public int visit(IASTStatement statement) {
- if (hasChangedChild(statement)) {
+ if (hasChangedChild(statement) && !hasAppendsOnly(statement)) {
synthTreatment(statement);
return ASTVisitor.PROCESS_SKIP;
}
return super.visit(statement);
}
+ @Override
+ public int leave(IASTStatement statement) {
+ if (hasAppendsOnly(statement)) {
+ handleAppends(statement);
+ }
+ return super.leave(statement);
+ }
+
class CodeComparer {
private final StringBuilder originalCode;
private final StringBuilder synthCode;
@@ -536,14 +723,6 @@ public class ChangeGenerator extends ASTVisitor {
protected void createChange(MultiTextEdit edit, IASTNode changedNode) {
int changeOffset = getOffsetIncludingComments(changedNode);
- TextEditGroup editGroup = new TextEditGroup(Messages.ChangeGenerator_group);
- for (ASTModification currentModification : modificationParent.get(changedNode)) {
- if (currentModification.getAssociatedEditGroup() != null) {
- editGroup = currentModification.getAssociatedEditGroup();
- edit.addChildren(editGroup.getTextEdits());
- break;
- }
- }
createChange(edit, changeOffset);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ChangeGeneratorWriterVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ChangeGeneratorWriterVisitor.java
index c5b9513d1c2..72537365b5d 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ChangeGeneratorWriterVisitor.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ChangeGeneratorWriterVisitor.java
@@ -84,10 +84,8 @@ public class ChangeGeneratorWriterVisitor extends ASTWriterVisitor {
this.fileScope = fileScope;
this.shouldVisitTranslationUnit = true;
this.stack = new ModificationScopeStack(modificationStore);
- declaratorWriter = new ModifiedASTDeclaratorWriter(scribe, this,
- stack, commentMap);
- expWriter = new ModifiedASTExpressionWriter(scribe, this, macroHandler,
- stack, commentMap);
+ declaratorWriter = new ModifiedASTDeclaratorWriter(scribe, this, stack, commentMap);
+ expWriter = new ModifiedASTExpressionWriter(scribe, this, macroHandler, stack, commentMap);
statementWriter = new ModifiedASTStatementWriter(scribe, this, stack, commentMap);
declSpecWriter = new ModifiedASTDeclSpecWriter(scribe, this, stack, commentMap);
declarationWriter = new ModifiedASTDeclarationWriter(scribe, this, stack, commentMap);
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTDeclSpecWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTDeclSpecWriter.java
index e6de9cb3271..cd591419002 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTDeclSpecWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTDeclSpecWriter.java
@@ -11,9 +11,9 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
+import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.ASTWriterVisitor;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.DeclSpecWriter;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.Scribe;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
@@ -21,8 +21,8 @@ import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
public class ModifiedASTDeclSpecWriter extends DeclSpecWriter {
private final ASTModificationHelper modificationHelper;
- public ModifiedASTDeclSpecWriter(Scribe scribe, ASTVisitor visitor, ModificationScopeStack stack,
- NodeCommentMap commentMap) {
+ public ModifiedASTDeclSpecWriter(Scribe scribe, ASTWriterVisitor visitor,
+ ModificationScopeStack stack, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap);
this.modificationHelper = new ASTModificationHelper(stack);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTDeclarationWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTDeclarationWriter.java
index 59e3953fad8..0ea61f3aaca 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTDeclarationWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTDeclarationWriter.java
@@ -12,11 +12,11 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConstructorChainInitializer;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDefinition;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition;
+import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.ASTWriterVisitor;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.DeclarationWriter;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.Scribe;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
@@ -24,21 +24,26 @@ import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
public class ModifiedASTDeclarationWriter extends DeclarationWriter {
private final ASTModificationHelper modificationHelper;
- public ModifiedASTDeclarationWriter(Scribe scribe, ASTVisitor visitor, ModificationScopeStack stack, NodeCommentMap commentMap) {
+ public ModifiedASTDeclarationWriter(Scribe scribe, ASTWriterVisitor visitor,
+ ModificationScopeStack stack, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap);
this.modificationHelper = new ASTModificationHelper(stack);
}
@Override
- protected void writeDeclarationsInNamespace(ICPPASTNamespaceDefinition namespaceDefinition, IASTDeclaration[] declarations) {
- IASTDeclaration[] modifiedDeclarations = modificationHelper.createModifiedChildArray(namespaceDefinition, declarations, IASTDeclaration.class, commentMap);
+ protected void writeDeclarationsInNamespace(ICPPASTNamespaceDefinition namespaceDefinition,
+ IASTDeclaration[] declarations) {
+ IASTDeclaration[] modifiedDeclarations = modificationHelper.createModifiedChildArray(
+ namespaceDefinition, declarations, IASTDeclaration.class, commentMap);
super.writeDeclarationsInNamespace(namespaceDefinition, modifiedDeclarations);
}
@Override
protected void writeCtorChainInitializer(ICPPASTFunctionDefinition funcDec,
ICPPASTConstructorChainInitializer[] ctorInitChain) {
- ICPPASTConstructorChainInitializer[] modifiedChainInitializer = modificationHelper.createModifiedChildArray(funcDec, ctorInitChain, ICPPASTConstructorChainInitializer.class, commentMap);
- super.writeCtorChainInitializer(funcDec, modifiedChainInitializer);
+ ICPPASTConstructorChainInitializer[] modifiedInitializer =
+ modificationHelper.createModifiedChildArray(funcDec, ctorInitChain,
+ ICPPASTConstructorChainInitializer.class, commentMap);
+ super.writeCtorChainInitializer(funcDec, modifiedInitializer);
}
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTDeclaratorWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTDeclaratorWriter.java
index cb764ab7edb..b5d416a7721 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTDeclaratorWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTDeclaratorWriter.java
@@ -12,7 +12,6 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
@@ -25,6 +24,7 @@ import org.eclipse.cdt.core.dom.ast.IASTStandardFunctionDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTTypeId;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator;
import org.eclipse.cdt.core.dom.ast.gnu.c.ICASTKnRFunctionDeclarator;
+import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.ASTWriterVisitor;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.DeclaratorWriter;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.Scribe;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
@@ -32,7 +32,7 @@ import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
public class ModifiedASTDeclaratorWriter extends DeclaratorWriter {
private final ASTModificationHelper modificationHelper;
- public ModifiedASTDeclaratorWriter(Scribe scribe, ASTVisitor visitor, ModificationScopeStack stack, NodeCommentMap commentMap) {
+ public ModifiedASTDeclaratorWriter(Scribe scribe, ASTWriterVisitor visitor, ModificationScopeStack stack, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap);
this.modificationHelper = new ASTModificationHelper(stack);
}
@@ -40,29 +40,31 @@ public class ModifiedASTDeclaratorWriter extends DeclaratorWriter {
@Override
protected void writeParameterDeclarations(IASTStandardFunctionDeclarator funcDec,
IASTParameterDeclaration[] paraDecls) {
- IASTParameterDeclaration[] modifiedParameters = modificationHelper
- .createModifiedChildArray(funcDec, paraDecls, IASTParameterDeclaration.class,
- commentMap);
+ IASTParameterDeclaration[] modifiedParameters = modificationHelper.createModifiedChildArray(
+ funcDec, paraDecls, IASTParameterDeclaration.class, commentMap);
super.writeParameterDeclarations(funcDec, modifiedParameters);
}
@Override
- protected void writePointerOperators(IASTDeclarator declarator,IASTPointerOperator[] unmodifiedPointerOperations) {
+ protected void writePointerOperators(IASTDeclarator declarator,
+ IASTPointerOperator[] unmodifiedPointerOperations) {
IASTPointerOperator[] modifiedPointer = modificationHelper.createModifiedChildArray(
declarator, unmodifiedPointerOperations, IASTPointerOperator.class, commentMap);
super.writePointerOperators(declarator, modifiedPointer);
}
@Override
- protected void writeArrayModifiers(IASTArrayDeclarator arrDecl,
- IASTArrayModifier[] arrMods) {
- IASTArrayModifier[] modifiedModifiers = modificationHelper.createModifiedChildArray(arrDecl, arrMods, IASTArrayModifier.class, commentMap);
+ protected void writeArrayModifiers(IASTArrayDeclarator arrDecl, IASTArrayModifier[] arrMods) {
+ IASTArrayModifier[] modifiedModifiers = modificationHelper.createModifiedChildArray(arrDecl,
+ arrMods, IASTArrayModifier.class, commentMap);
super.writeArrayModifiers(arrDecl, modifiedModifiers);
}
@Override
- protected void writeExceptionSpecification(ICPPASTFunctionDeclarator funcDec, IASTTypeId[] exceptions ) {
- IASTTypeId[] modifiedExceptions = modificationHelper.createModifiedChildArray(funcDec, exceptions, IASTTypeId.class, commentMap);
+ protected void writeExceptionSpecification(ICPPASTFunctionDeclarator funcDec,
+ IASTTypeId[] exceptions) {
+ IASTTypeId[] modifiedExceptions = modificationHelper.createModifiedChildArray(funcDec,
+ exceptions, IASTTypeId.class, commentMap);
// it makes a difference whether the exception array is identical to
// ICPPASTFunctionDeclarator.NO_EXCEPTION_SPECIFICATION
if (modifiedExceptions.length == 0 &&
@@ -74,18 +76,18 @@ public class ModifiedASTDeclaratorWriter extends DeclaratorWriter {
}
@Override
- protected void writeKnRParameterDeclarations(
- ICASTKnRFunctionDeclarator knrFunct,
+ protected void writeKnRParameterDeclarations(ICASTKnRFunctionDeclarator knrFunct,
IASTDeclaration[] knrDeclarations) {
- IASTDeclaration[] modifiedDeclarations = modificationHelper.createModifiedChildArray(knrFunct, knrDeclarations, IASTDeclaration.class, commentMap);
-
+ IASTDeclaration[] modifiedDeclarations = modificationHelper.createModifiedChildArray(
+ knrFunct, knrDeclarations, IASTDeclaration.class, commentMap);
super.writeKnRParameterDeclarations(knrFunct, modifiedDeclarations);
}
@Override
- protected void writeKnRParameterNames(
- ICASTKnRFunctionDeclarator knrFunct, IASTName[] parameterNames) {
- IASTName[] modifiedNames = modificationHelper.createModifiedChildArray(knrFunct, parameterNames, IASTName.class, commentMap);
+ protected void writeKnRParameterNames(ICASTKnRFunctionDeclarator knrFunct,
+ IASTName[] parameterNames) {
+ IASTName[] modifiedNames = modificationHelper.createModifiedChildArray(knrFunct,
+ parameterNames, IASTName.class, commentMap);
super.writeKnRParameterNames(knrFunct, modifiedNames);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTExpressionWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTExpressionWriter.java
index 08262e57d24..609182ec194 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTExpressionWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTExpressionWriter.java
@@ -12,7 +12,6 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTExpression;
import org.eclipse.cdt.core.dom.ast.IASTExpressionList;
import org.eclipse.cdt.core.dom.ast.IASTInitializer;
@@ -20,6 +19,7 @@ import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNewExpression;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification.ModificationKind;
+import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.ASTWriterVisitor;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.ExpressionWriter;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.MacroExpansionHandler;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.Scribe;
@@ -28,7 +28,7 @@ import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
public class ModifiedASTExpressionWriter extends ExpressionWriter {
private final ASTModificationHelper modificationHelper;
- public ModifiedASTExpressionWriter(Scribe scribe, ASTVisitor visitor, MacroExpansionHandler macroHandler,
+ public ModifiedASTExpressionWriter(Scribe scribe, ASTWriterVisitor visitor, MacroExpansionHandler macroHandler,
ModificationScopeStack stack, NodeCommentMap commentMap) {
super(scribe, visitor, macroHandler, commentMap);
this.modificationHelper = new ASTModificationHelper(stack);
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTStatementWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTStatementWriter.java
index 0f5f0491941..9977fbbf7e3 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTStatementWriter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ModifiedASTStatementWriter.java
@@ -11,10 +11,10 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator;
-import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTStatement;
+import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.ASTWriterVisitor;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.Scribe;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.StatementWriter;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
@@ -22,7 +22,7 @@ import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
public class ModifiedASTStatementWriter extends StatementWriter {
private final ASTModificationHelper modificationHelper;
- public ModifiedASTStatementWriter(Scribe scribe, ASTVisitor visitor, ModificationScopeStack stack, NodeCommentMap commentMap) {
+ public ModifiedASTStatementWriter(Scribe scribe, ASTWriterVisitor visitor, ModificationScopeStack stack, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap);
this.modificationHelper = new ASTModificationHelper(stack);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/util/FileContentHelper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/util/FileContentHelper.java
index 6c8aaa8c51f..8fc40a49d76 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/util/FileContentHelper.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/util/FileContentHelper.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.util;
@@ -22,33 +22,29 @@ import org.eclipse.core.runtime.CoreException;
/**
* @author Emanuel Graf IFS
- *
*/
public class FileContentHelper {
-
- private static final int bufferSize = 512;
+ private static final int BUFFER_SIZE = 2048;
- public static String getContent(IFile file, int start) throws CoreException, IOException{
-
+ public static String getContent(IFile file, int start) throws CoreException, IOException {
InputStreamReader reader = getReaderForFile(file);
skip(start, reader);
final String rest = readRest(reader);
reader.close();
return rest;
-
}
public static String getContent(IFile file, int start, int length) {
try {
InputStreamReader r = getReaderForFile(file);
- char[] bytes = new char[length];
+ char[] chars = new char[length];
skip(start, r);
- read(length, r, bytes);
+ read(length, r, chars);
r.close();
- return new String(bytes);
+ return new String(chars);
} catch (IOException e) {
CCorePlugin.log(e);
} catch (CoreException e) {
@@ -60,29 +56,26 @@ public class FileContentHelper {
private static InputStreamReader getReaderForFile(IFile file)
throws CoreException, UnsupportedEncodingException {
InputStream contents = file.getContents();
- InputStreamReader r = new InputStreamReader(contents, file.getCharset());
- return r;
+ return new InputStreamReader(contents, file.getCharset());
}
- private static String readRest(InputStreamReader reader) throws IOException{
+ private static String readRest(InputStreamReader reader) throws IOException {
StringBuilder content = new StringBuilder();
- char[] buffer = new char[bufferSize];
+ char[] buffer = new char[BUFFER_SIZE];
int bytesRead = 0;
- while((bytesRead = reader.read(buffer)) >= 0){
+ while ((bytesRead = reader.read(buffer)) >= 0) {
content.append(buffer, 0, bytesRead);
}
-
return content.toString();
}
- private static void read(int length, InputStreamReader r, char[] bytes)
- throws IOException {
+ private static void read(int length, InputStreamReader r, char[] bytes) throws IOException {
int bufferOffset = 0;
int charactersRead = 0;
- while(charactersRead >= 0 && length > 0){
+ while (charactersRead >= 0 && length > 0) {
charactersRead = r.read(bytes, bufferOffset, length);
- if(charactersRead > 0){
+ if (charactersRead > 0) {
bufferOffset += charactersRead;
length -= charactersRead;
}
@@ -91,12 +84,11 @@ public class FileContentHelper {
private static void skip(int start, InputStreamReader r) throws IOException {
long skipped = 0;
- while(skipped >= 0 && start > 0 && r.ready()){
+ while (skipped >= 0 && start > 0 && r.ready()) {
skipped = r.skip(start);
- if(skipped > 0){
+ if (skipped > 0) {
start -= skipped;
}
}
}
-
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/util/FileHelper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/util/FileHelper.java
index 6c7ad12c6bb..fe37d7df6f2 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/util/FileHelper.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/util/FileHelper.java
@@ -31,7 +31,7 @@ import org.eclipse.jface.text.TextUtilities;
public class FileHelper {
private static final String DEFAULT_LINE_DELIMITTER = "\n"; //$NON-NLS-1$
- public static IFile getIFilefromIASTNode(IASTNode node) {
+ public static IFile getFileFromNode(IASTNode node) {
IPath implPath = new Path(node.getContainingFilename());
return ResourceLookup.selectFileForLocation(implPath, null);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/util/OffsetHelper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/util/OffsetHelper.java
index ba7a270190a..fca0030ba54 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/util/OffsetHelper.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/util/OffsetHelper.java
@@ -7,7 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Institute for Software - initial API and implementation
+ * Institute for Software - initial API and implementation
******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.util;
@@ -19,7 +19,6 @@ import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
/**
* @author Emanuel Graf IFS
- *
*/
public class OffsetHelper {
@@ -32,10 +31,11 @@ public class OffsetHelper {
if (location instanceof IASTMacroExpansionLocation) {
IASTMacroExpansionLocation macroLoc = (IASTMacroExpansionLocation) location;
offset = macroLoc.asFileLocation().getNodeOffset();
- }else {
+ } else {
offset = location.asFileLocation().getNodeOffset();
}
- if(offset < nodeStart) nodeStart = offset;
+ if (offset < nodeStart)
+ nodeStart = offset;
}
} else {
nodeStart = node.getFileLocation().getNodeOffset();
@@ -55,14 +55,13 @@ public class OffsetHelper {
IASTMacroExpansionLocation macroLoc = (IASTMacroExpansionLocation) location;
fileOffset = macroLoc.asFileLocation().getNodeOffset();
length = macroLoc.asFileLocation().getNodeLength();
- }else {
+ } else {
fileOffset = location.asFileLocation().getNodeOffset();
length = location.asFileLocation().getNodeLength();
}
}
} else {
IASTFileLocation loc = node.getFileLocation();
-
fileOffset = loc.getNodeOffset();
length = loc.getNodeLength();
}
@@ -75,7 +74,7 @@ public class OffsetHelper {
}
public static int getLengthIncludingComment(IASTNode node) {
- return OffsetHelper.getEndOffsetIncludingComments(node) - OffsetHelper.getOffsetIncludingComment(node);
+ return getEndOffsetIncludingComments(node) - getOffsetIncludingComment(node);
}
public static int getNodeOffset(ASTNode node) {
@@ -92,6 +91,5 @@ public class OffsetHelper {
public static int getEndingLineNumber(IASTNode node) {
return node.getFileLocation().getEndingLineNumber();
- }
-
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/CIndex.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/CIndex.java
index 74e05607504..1d85f7fd0b1 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/CIndex.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/CIndex.java
@@ -81,6 +81,7 @@ public class CIndex implements IIndex {
this(fragments, fragments.length);
}
+ @Override
public IIndexBinding findBinding(IName name) throws CoreException {
if (name instanceof IIndexFragmentName) {
return adaptBinding(((IIndexFragmentName) name).getBinding());
@@ -99,11 +100,13 @@ public class CIndex implements IIndex {
return null;
}
+ @Override
public IIndexBinding[] findBindings(Pattern pattern, boolean isFullyQualified, IndexFilter filter,
IProgressMonitor monitor) throws CoreException {
return findBindings(new Pattern[] { pattern }, isFullyQualified, filter, monitor);
}
+ @Override
public IIndexBinding[] findBindings(Pattern[] patterns, boolean isFullyQualified, IndexFilter filter,
IProgressMonitor monitor) throws CoreException {
if (SPECIALCASE_SINGLES && fFragments.length == 1) {
@@ -133,6 +136,7 @@ public class CIndex implements IIndex {
}
}
+ @Override
public IIndexBinding[] findMacroContainers(Pattern pattern, IndexFilter filter, IProgressMonitor monitor)
throws CoreException {
if (SPECIALCASE_SINGLES && fFragments.length == 1) {
@@ -162,6 +166,7 @@ public class CIndex implements IIndex {
}
}
+ @Override
public IIndexName[] findNames(IBinding binding, int flags) throws CoreException {
LinkedList result= new LinkedList();
if (binding instanceof ICPPUsingDeclaration) {
@@ -179,62 +184,37 @@ public class CIndex implements IIndex {
binding= bindings[0];
}
- // Maps a file location to -1 if the file belongs to an earlier index fragment,
- // or to the index of the last checked index fragment plus one, if the file doesn't belong
- // to any of the index fragments up to the last checked one.
- HashMap fileCheckCache = new HashMap();
+ // Collect the names from all fragments. Since the same file may be represented by multiple
+ // variants in one or more index fragments, we need to filter out duplicate names.
+ // See bug 192352.
+ HashSet encounteredNames = new HashSet();
for (int i = 0; i < fPrimaryFragmentCount; i++) {
- IIndexFragment fragment = fFragments[i];
- final IIndexFragmentName[] names = fragment.findNames(binding, flags);
+ final IIndexFragmentName[] names = fFragments[i].findNames(binding, flags);
for (IIndexFragmentName name : names) {
- IIndexFileLocation location = name.getFile().getLocation();
- Integer checkState = fileCheckCache.get(location);
- int checkOffset = checkState == null ? 0 : checkState.intValue();
- if (checkOffset >= 0) {
- for (; checkOffset < i; checkOffset++) {
- IIndexFragment fragment2 = fFragments[checkOffset];
- if (fragment2.getFiles(location).length != 0) {
- checkOffset = -1;
- break;
- }
- }
- fileCheckCache.put(location, Integer.valueOf(checkOffset));
- }
- if (checkOffset == i) {
+ if (encounteredNames.add(new NameKey(name))) {
result.add(name);
}
}
}
-// // bug 192352, files can reside in multiple fragments, remove duplicates
-// if (fragCount > 1 || (flags & IIndex.SEARCH_ACROSS_LANGUAGE_BOUNDARIES) != 0) {
-// HashMap fileMap= new HashMap();
-// for (Iterator iterator = result.iterator(); iterator.hasNext();) {
-// final IIndexFragmentName name = iterator.next();
-// final IIndexFile file= name.getFile();
-// final String fileKey= name.getFile().getLocation().getURI().toString();
-// final IIndexFile otherFile= fileMap.get(fileKey);
-// if (otherFile == null) {
-// fileMap.put(fileKey, file);
-// } else if (!otherFile.equals(file)) { // same file in another fragment
-// iterator.remove();
-// }
-// }
-// }
return result.toArray(new IIndexName[result.size()]);
}
+ @Override
public IIndexName[] findDeclarations(IBinding binding) throws CoreException {
return findNames(binding, FIND_DECLARATIONS_DEFINITIONS);
}
+ @Override
public IIndexName[] findDefinitions(IBinding binding) throws CoreException {
return findNames(binding, FIND_DEFINITIONS);
}
+ @Override
public IIndexName[] findReferences(IBinding binding) throws CoreException {
return findNames(binding, FIND_REFERENCES);
}
+ @Override
@Deprecated
public IIndexFile getFile(int linkageID, IIndexFileLocation location) throws CoreException {
for (int i = 0; i < fPrimaryFragmentCount; i++) {
@@ -246,6 +226,7 @@ public class CIndex implements IIndex {
return null;
}
+ @Override
public IIndexFile getFile(int linkageID, IIndexFileLocation location,
ISignificantMacros significantMacros) throws CoreException {
for (int i = 0; i < fPrimaryFragmentCount; i++) {
@@ -257,6 +238,7 @@ public class CIndex implements IIndex {
return null;
}
+ @Override
public IIndexFile[] getFiles(int linkageID, IIndexFileLocation location) throws CoreException {
if (location == null) {
return IIndexFile.EMPTY_FILE_ARRAY;
@@ -280,6 +262,7 @@ public class CIndex implements IIndex {
return result.toArray(new IIndexFile[result.size()]);
}
+ @Override
public IIndexFile[] getFiles(IIndexFileLocation location) throws CoreException {
if (location == null) {
return IIndexFile.EMPTY_FILE_ARRAY;
@@ -302,6 +285,7 @@ public class CIndex implements IIndex {
return result.toArray(new IIndexFile[result.size()]);
}
+ @Override
public IIndexFile resolveInclude(IIndexInclude include) throws CoreException {
IIndexFragmentInclude fragmentInclude = (IIndexFragmentInclude) include;
IIndexFragmentFile result= fragmentInclude.getIncludes();
@@ -315,10 +299,12 @@ public class CIndex implements IIndex {
return getFile(result.getLinkageID(), result.getLocation(), result.getSignificantMacros());
}
+ @Override
public IIndexInclude[] findIncludedBy(IIndexFile file) throws CoreException {
return findIncludedBy(file, 0);
}
+ @Override
public IIndexInclude[] findIncludedBy(IIndexFile file, int depth) throws CoreException {
List result= new ArrayList();
findIncludedBy(file.getLinkageID(), Collections.singletonList(file), result, depth,
@@ -354,10 +340,12 @@ public class CIndex implements IIndex {
findIncludedBy(linkageID, nextLevel, out, depth, handled);
}
+ @Override
public IIndexInclude[] findIncludes(IIndexFile file) throws CoreException {
return findIncludes(file, 0);
}
+ @Override
public IIndexInclude[] findIncludes(IIndexFile file, int depth) throws CoreException {
List result= new ArrayList();
findIncludes(Collections.singletonList(file), result, depth, new HashSet