Lines 46-51
Link Here
|
46 |
|
46 |
|
47 |
import java.io.IOException; |
47 |
import java.io.IOException; |
48 |
import java.util.ArrayList; |
48 |
import java.util.ArrayList; |
|
|
49 |
import java.util.Collection; |
49 |
import java.util.Iterator; |
50 |
import java.util.Iterator; |
50 |
import java.util.List; |
51 |
import java.util.List; |
51 |
import java.util.Map; |
52 |
import java.util.Map; |
Lines 58-69
Link Here
|
58 |
import org.netbeans.modules.cnd.api.model.CsmNamespace; |
59 |
import org.netbeans.modules.cnd.api.model.CsmNamespace; |
59 |
import org.netbeans.modules.cnd.api.model.CsmNamespaceDefinition; |
60 |
import org.netbeans.modules.cnd.api.model.CsmNamespaceDefinition; |
60 |
import org.netbeans.modules.cnd.api.model.CsmObject; |
61 |
import org.netbeans.modules.cnd.api.model.CsmObject; |
|
|
62 |
import org.netbeans.modules.cnd.api.model.CsmOffsetable; |
61 |
import org.netbeans.modules.cnd.api.model.CsmOffsetableDeclaration; |
63 |
import org.netbeans.modules.cnd.api.model.CsmOffsetableDeclaration; |
62 |
import org.netbeans.modules.cnd.api.model.CsmQualifiedNamedElement; |
64 |
import org.netbeans.modules.cnd.api.model.CsmQualifiedNamedElement; |
63 |
import org.netbeans.modules.cnd.api.model.CsmScope; |
65 |
import org.netbeans.modules.cnd.api.model.CsmScope; |
|
|
66 |
import org.netbeans.modules.cnd.api.model.services.CsmExpressionResolver; |
64 |
import org.netbeans.modules.cnd.api.model.services.CsmSelect; |
67 |
import org.netbeans.modules.cnd.api.model.services.CsmSelect; |
65 |
import org.netbeans.modules.cnd.api.model.services.CsmSelect.CsmFilter; |
68 |
import org.netbeans.modules.cnd.api.model.services.CsmSelect.CsmFilter; |
|
|
69 |
import org.netbeans.modules.cnd.api.model.services.CsmSymbolResolver; |
70 |
import org.netbeans.modules.cnd.api.model.util.CsmBaseUtilities; |
66 |
import org.netbeans.modules.cnd.api.model.util.CsmKindUtilities; |
71 |
import org.netbeans.modules.cnd.api.model.util.CsmKindUtilities; |
|
|
72 |
import org.netbeans.modules.cnd.apt.utils.APTUtils; |
67 |
import org.netbeans.modules.cnd.modelimpl.content.file.FileContent; |
73 |
import org.netbeans.modules.cnd.modelimpl.content.file.FileContent; |
68 |
import org.netbeans.modules.cnd.modelimpl.csm.core.AstRenderer; |
74 |
import org.netbeans.modules.cnd.modelimpl.csm.core.AstRenderer; |
69 |
import org.netbeans.modules.cnd.modelimpl.csm.core.AstUtil; |
75 |
import org.netbeans.modules.cnd.modelimpl.csm.core.AstUtil; |
Lines 160-167
Link Here
|
160 |
CharSequence[] cnn = classOrNspNames; |
166 |
CharSequence[] cnn = classOrNspNames; |
161 |
if( cnn != null && cnn.length > 0) { |
167 |
if( cnn != null && cnn.length > 0) { |
162 |
Resolver resolver = ResolverFactory.createResolver(this); |
168 |
Resolver resolver = ResolverFactory.createResolver(this); |
|
|
169 |
CsmObject obj = null; |
163 |
try { |
170 |
try { |
164 |
CsmObject obj = resolver.resolve(cnn, Resolver.CLASSIFIER | Resolver.NAMESPACE); |
171 |
obj = resolver.resolve(cnn, Resolver.CLASSIFIER | Resolver.NAMESPACE); |
165 |
if (CsmKindUtilities.isClassifier(obj)) { |
172 |
if (CsmKindUtilities.isClassifier(obj)) { |
166 |
CsmClassifier cls = resolver.getOriginalClassifier((CsmClassifier)obj); |
173 |
CsmClassifier cls = resolver.getOriginalClassifier((CsmClassifier)obj); |
167 |
if (cls != null) { |
174 |
if (cls != null) { |
Lines 176-181
Link Here
|
176 |
} finally { |
183 |
} finally { |
177 |
ResolverFactory.releaseResolver(resolver); |
184 |
ResolverFactory.releaseResolver(resolver); |
178 |
} |
185 |
} |
|
|
186 |
// 1) Check that resolver found nothing. It is unlikely that |
187 |
// further resolving will return different object. |
188 |
// 2) Check that length of qualified name is more than 1. |
189 |
// Seems that it makes no sense to resolve qualified name |
190 |
// with one element any further. |
191 |
if (obj == null && cnn.length > 1) { |
192 |
StringBuilder sb = new StringBuilder(cnn[0]); |
193 |
for (int i = 1; i < cnn.length; ++i) { |
194 |
sb.append(APTUtils.SCOPE).append(cnn[i]); |
195 |
} |
196 |
int startOffset = getStartOffset(); |
197 |
Collection<CsmObject> resolved = CsmExpressionResolver.resolveObjects(sb.toString(), getContainingFile(), startOffset, null); |
198 |
if (resolved != null && !resolved.isEmpty()) { |
199 |
for (CsmObject candidate : resolved) { |
200 |
if (CsmKindUtilities.isClass(candidate) || CsmKindUtilities.isNamespace(candidate)) { |
201 |
return candidate; |
202 |
} |
203 |
} |
204 |
} |
205 |
} |
179 |
} |
206 |
} |
180 |
return null; |
207 |
return null; |
181 |
} |
208 |
} |