From ec3ab3016d92cc7336db358847c79f7ecb5beb25 Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Fri, 3 Feb 2017 00:48:04 -0500 Subject: [PATCH] Bug 511331 - Do not color entire qualified name with problem highlighting Change-Id: Ic712ec2e03bdf03f5ae97019fb9ae8994c5dec23 --- .../cdt/ui/tests/text/SemanticHighlightingTest.java | 10 ++++++++++ .../cdt/internal/ui/editor/SemanticHighlightings.java | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/SemanticHighlightingTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/SemanticHighlightingTest.java index 0ff961b323b..95b758b2c90 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/SemanticHighlightingTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/SemanticHighlightingTest.java @@ -643,4 +643,14 @@ public class SemanticHighlightingTest extends TestCase { public void testArgumentsOfFunctionTemplateSpecialization_510788() throws Exception { makeAssertions(); } + + // struct Waldo { //$class + // static void find(); //$methodDeclaration + // }; + // int main() { //$functionDeclaration + // Waldo::search(); //$class,problem + // } + public void testQualifiedName_511331() throws Exception { + makeAssertions(); + } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SemanticHighlightings.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SemanticHighlightings.java index 16a09d53c5c..b354933e842 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SemanticHighlightings.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SemanticHighlightings.java @@ -1469,6 +1469,11 @@ public class SemanticHighlightings { if (node instanceof IASTProblem) { return true; } + if (node instanceof ICPPASTQualifiedName) { + // Do not highlight entire qualified name. Allow those of its segments + // which resolve, to get a non-Problem highlighting. + return false; + } IBinding binding= token.getBinding(); if (binding instanceof IProblemBinding) { IProblemBinding problemBinding = (IProblemBinding) binding;