diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/AbstractCLanguage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/AbstractCLanguage.java index 40ba0f24603..ea0fad32f6f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/AbstractCLanguage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/AbstractCLanguage.java @@ -38,6 +38,7 @@ import org.eclipse.cdt.core.parser.IScannerInfo; import org.eclipse.cdt.core.parser.KeywordSetKey; import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserMode; +import org.eclipse.cdt.core.parser.util.CharArrayIntMap; import org.eclipse.cdt.internal.core.dom.parser.c.GNUCSourceParser; import org.eclipse.cdt.internal.core.parser.scanner2.DOMScanner; import org.eclipse.cdt.internal.core.parser.token.KeywordSets; @@ -195,10 +196,12 @@ public abstract class AbstractCLanguage extends AbstractLanguage implements ICLa public String[] getKeywords() { Set keywords= KeywordSets.getKeywords(KeywordSetKey.KEYWORDS, ParserLanguage.C); keywords= new HashSet(keywords); - List additionalKeywords= getScannerExtensionConfiguration().getAdditionalKeywords().toList(); - for (Iterator iterator = additionalKeywords.iterator(); iterator.hasNext(); ) { - char[] name = (char[]) iterator.next(); - keywords.add(new String(name)); + CharArrayIntMap additionalKeywords= getScannerExtensionConfiguration().getAdditionalKeywords(); + if (additionalKeywords != null) { + for (Iterator iterator = additionalKeywords.toList().iterator(); iterator.hasNext(); ) { + char[] name = (char[]) iterator.next(); + keywords.add(new String(name)); + } } return (String[]) keywords.toArray(new String[keywords.size()]); } @@ -217,10 +220,12 @@ public abstract class AbstractCLanguage extends AbstractLanguage implements ICLa public String[] getPreprocessorKeywords() { Set keywords= KeywordSets.getKeywords(KeywordSetKey.PP_DIRECTIVE, ParserLanguage.C); keywords= new HashSet(keywords); - List additionalKeywords= getScannerExtensionConfiguration().getAdditionalPreprocessorKeywords().toList(); - for (Iterator iterator = additionalKeywords.iterator(); iterator.hasNext(); ) { - char[] name = (char[]) iterator.next(); - keywords.add(new String(name)); + CharArrayIntMap additionalKeywords= getScannerExtensionConfiguration().getAdditionalPreprocessorKeywords(); + if (additionalKeywords != null) { + for (Iterator iterator = additionalKeywords.toList().iterator(); iterator.hasNext(); ) { + char[] name = (char[]) iterator.next(); + keywords.add(new String(name)); + } } return (String[]) keywords.toArray(new String[keywords.size()]); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/AbstractCPPLanguage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/AbstractCPPLanguage.java index 7130c2e1545..e21b11c2202 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/AbstractCPPLanguage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/AbstractCPPLanguage.java @@ -37,6 +37,7 @@ import org.eclipse.cdt.core.parser.IScannerInfo; import org.eclipse.cdt.core.parser.KeywordSetKey; import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserMode; +import org.eclipse.cdt.core.parser.util.CharArrayIntMap; import org.eclipse.cdt.internal.core.dom.parser.cpp.GNUCPPSourceParser; import org.eclipse.cdt.internal.core.parser.scanner2.DOMScanner; import org.eclipse.cdt.internal.core.parser.token.KeywordSets; @@ -192,10 +193,12 @@ public abstract class AbstractCPPLanguage extends AbstractLanguage implements IC public String[] getKeywords() { Set keywords= KeywordSets.getKeywords(KeywordSetKey.KEYWORDS, ParserLanguage.CPP); keywords= new HashSet(keywords); - List additionalKeywords= getScannerExtensionConfiguration().getAdditionalKeywords().toList(); - for (Iterator iterator = additionalKeywords.iterator(); iterator.hasNext(); ) { - char[] name = (char[]) iterator.next(); - keywords.add(new String(name)); + CharArrayIntMap additionalKeywords= getScannerExtensionConfiguration().getAdditionalKeywords(); + if (additionalKeywords != null) { + for (Iterator iterator = additionalKeywords.toList().iterator(); iterator.hasNext(); ) { + char[] name = (char[]) iterator.next(); + keywords.add(new String(name)); + } } return (String[]) keywords.toArray(new String[keywords.size()]); } @@ -214,10 +217,12 @@ public abstract class AbstractCPPLanguage extends AbstractLanguage implements IC public String[] getPreprocessorKeywords() { Set keywords= KeywordSets.getKeywords(KeywordSetKey.PP_DIRECTIVE, ParserLanguage.CPP); keywords= new HashSet(keywords); - List additionalKeywords= getScannerExtensionConfiguration().getAdditionalPreprocessorKeywords().toList(); - for (Iterator iterator = additionalKeywords.iterator(); iterator.hasNext(); ) { - char[] name = (char[]) iterator.next(); - keywords.add(new String(name)); + CharArrayIntMap additionalKeywords= getScannerExtensionConfiguration().getAdditionalPreprocessorKeywords(); + if (additionalKeywords != null) { + for (Iterator iterator = additionalKeywords.toList().iterator(); iterator.hasNext(); ) { + char[] name = (char[]) iterator.next(); + keywords.add(new String(name)); + } } return (String[]) keywords.toArray(new String[keywords.size()]); }