From f4cb39bc3ba626590e80caf576f91bdfc5d8c488 Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Wed, 17 Feb 2016 18:48:20 -0800 Subject: [PATCH] Bug 487972 - Unnecessary inclusion of Change-Id: I3f8b9cd157107f81a46e26c0966ce551772fb5ec --- .../refactoring/includes/BindingClassifierTest.java | 10 ++++++++++ .../ui/refactoring/includes/BindingClassifier.java | 7 ++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java index 2799764cc95..d18dc267961 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java @@ -436,6 +436,7 @@ public class BindingClassifierTest extends OneSourceMultipleHeadersTestCase { // }; public void testFieldReference_487971() throws Exception { assertDefined("A", "B"); + assertDeclared(); } // typedef unsigned int size_t; @@ -725,4 +726,13 @@ public class BindingClassifierTest extends OneSourceMultipleHeadersTestCase { assertDefined("MACRO"); assertDeclared(); } + + // #define bool bool + // #define false false + + // bool b = false; + public void testIdentityMacro_487972() throws Exception { + assertDefined(); + assertDeclared(); + } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/BindingClassifier.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/BindingClassifier.java index 2888a80c54c..f4ec8dde397 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/BindingClassifier.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/BindingClassifier.java @@ -74,6 +74,7 @@ import org.eclipse.cdt.core.dom.ast.ICompositeType; import org.eclipse.cdt.core.dom.ast.IEnumeration; import org.eclipse.cdt.core.dom.ast.IFunction; import org.eclipse.cdt.core.dom.ast.IFunctionType; +import org.eclipse.cdt.core.dom.ast.IMacroBinding; import org.eclipse.cdt.core.dom.ast.IParameter; import org.eclipse.cdt.core.dom.ast.IPointerType; import org.eclipse.cdt.core.dom.ast.IProblemBinding; @@ -858,7 +859,11 @@ public class BindingClassifier { for (IASTPreprocessorMacroExpansion macroExpansion : tu.getMacroExpansions()) { IASTPreprocessorMacroDefinition macroDefinition = macroExpansion.getMacroDefinition(); IASTName name = macroDefinition.getName(); - defineBinding(name.getBinding()); + IMacroBinding macroBinding = (IMacroBinding) name.getBinding(); + // Ignore trivial macros like '#define false false' + if (!CharArrayUtils.equals(name.getSimpleID(), macroBinding.getExpansion())) { + defineBinding(macroBinding); + } } return PROCESS_CONTINUE; }