Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContext.java')
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContext.java25
1 files changed, 15 insertions, 10 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContext.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContext.java
index 6a5a8a8431e..4ad40a589d7 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContext.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/ScannerContext.java
@@ -356,7 +356,7 @@ final class ScannerContext {
if (fInternalModifications != null && !fInternalModifications.containsKey(macroName)) {
final char[] expansion = macro.getExpansion();
if (expansion != null)
- fSignificantMacros.put(macroName, SignificantMacros.shortenValue(expansion));
+ addSignificantMacro(macroName, SignificantMacros.shortenValue(expansion));
}
}
@@ -367,16 +367,16 @@ final class ScannerContext {
}
private void addSignificantMacroDefined(char[] macroName) {
- char[] old= fSignificantMacros.put(macroName, SignificantMacros.DEFINED);
+ char[] old= addSignificantMacro(macroName, SignificantMacros.DEFINED);
if (old != null && old != SignificantMacros.DEFINED) {
// Put back more detailed condition
- fSignificantMacros.put(macroName, old);
+ addSignificantMacro(macroName, old);
}
}
public void significantMacroUndefined(char[] macroName) {
if (fInternalModifications != null && !fInternalModifications.containsKey(macroName)) {
- fSignificantMacros.put(macroName, SignificantMacros.UNDEFINED);
+ addSignificantMacro(macroName, SignificantMacros.UNDEFINED);
}
}
@@ -396,7 +396,6 @@ final class ScannerContext {
// Propagate significant macros to direct parent, if it is interested.
if (collector == fParent.fInternalModifications) {
- final CharArrayObjectMap<char[]> significant = fParent.fSignificantMacros;
for (int i= 0; i < fSignificantMacros.size(); i++) {
final char[] name = fSignificantMacros.keyAt(i);
if (!collector.containsKey(name)) {
@@ -406,7 +405,7 @@ final class ScannerContext {
fParent.addSignificantMacroDefined(name);
}
} else {
- significant.put(name, value);
+ fParent.addSignificantMacro(name, value);
}
}
}
@@ -425,7 +424,7 @@ final class ScannerContext {
@Override
public boolean visitValue(char[] macro, char[] value) {
if (!fInternalModifications.containsKey(macro)) {
- fSignificantMacros.put(macro, value);
+ addSignificantMacro(macro, value);
}
return true;
}
@@ -433,7 +432,7 @@ final class ScannerContext {
@Override
public boolean visitUndefined(char[] macro) {
if (!fInternalModifications.containsKey(macro)) {
- fSignificantMacros.put(macro, SignificantMacros.UNDEFINED);
+ addSignificantMacro(macro, SignificantMacros.UNDEFINED);
}
return true;
}
@@ -441,13 +440,19 @@ final class ScannerContext {
@Override
public boolean visitDefined(char[] macro) {
if (!fInternalModifications.containsKey(macro)) {
- fSignificantMacros.put(macro, SignificantMacros.DEFINED);
+ addSignificantMacro(macro, SignificantMacros.DEFINED);
}
return true;
}
});
}
-
+
+ private char[] addSignificantMacro(char[] macro, char[] value) {
+ if (CPreprocessor.isPreprocessorProvidedMacro(macro))
+ return null;
+ return fSignificantMacros.put(macro, value);
+ }
+
public int getLoadedVersionCount() {
return fLoadedVersionCount;
}

Back to the top