Skip to main content
summaryrefslogtreecommitdiffstats
blob: 4168c8cb07ee3b931a0df9db706eb15493bccc15 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/**********************************************************************
 * This file is part of "Object Teams Development Tooling"-Software
 * 
 * Copyright 2004, 2006 Fraunhofer Gesellschaft, Munich, Germany,
 * for its Fraunhofer Institute for Computer Architecture and Software
 * Technology (FIRST), Berlin, Germany and Technical University Berlin,
 * Germany.
 * 
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 * $Id: TeamDeclarationLocator.java 23417 2010-02-03 20:13:55Z stephan $
 * 
 * Please visit http://www.eclipse.org/objectteams for updates and contact.
 * 
 * Contributors:
 * Fraunhofer FIRST - Initial API and implementation
 * Technical University Berlin - Initial API and implementation
 **********************************************************************/
package org.eclipse.objectteams.otdt.internal.core.search.matching;

import org.eclipse.jdt.core.Flags;
import org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
import org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
import org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
import org.eclipse.jdt.internal.core.search.matching.MatchingNodeSet;
import org.eclipse.jdt.internal.core.search.matching.TypeDeclarationLocator;

/**
 * NEW for OTDT
 * 
 * A Locator for Teams (all non-teams are IMPOSSIBLE_MATCHes) 
 * @author gis
 */
public class TeamDeclarationLocator extends TypeDeclarationLocator
{
    public TeamDeclarationLocator(TeamTypePattern pattern)
    {
        super(pattern);
    }

    @Override
	public int match(TypeDeclaration type, MatchingNodeSet nodeSet)
    {
        if (!Flags.isTeam(type.modifiers))
            return IMPOSSIBLE_MATCH;
        
        return super.match(type, nodeSet);
    }

    @Override
	protected int resolveLevelForType(char[] qualifiedPattern, TypeBinding type)
    {
        if (type.leafComponentType().isBaseType())
            return IMPOSSIBLE_MATCH;

        // leaf must be a reference binding then
        if (!((ReferenceBinding) type.leafComponentType()).isTeam())
            return IMPOSSIBLE_MATCH;
        
        return super.resolveLevelForType(qualifiedPattern, type);
    }
}

Back to the top