~ubuntu-branches/ubuntu/natty/aspectj/natty

« back to all changes in this revision

Viewing changes to org.aspectj/modules/org.aspectj.matcher/src/org/aspectj/weaver/patterns/ScopeWithTypeVariables.java

  • Committer: Bazaar Package Importer
  • Author(s): Damien Raude-Morvan
  • Date: 2009-10-04 16:37:23 UTC
  • mfrom: (1.1.3 upstream) (3.1.3 sid)
  • Revision ID: james.westby@ubuntu.com-20091004163723-ck4y7j7fhjxskkie
Tags: 1.6.6+dfsg-1
* New upstream release.
  - Update 02_use_gjdoc.diff patch
* Update my email address

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* *******************************************************************
 
2
 * Copyright (c) 2005 Contributors.
 
3
 * All rights reserved. 
 
4
 * This program and the accompanying materials are made available 
 
5
 * under the terms of the Eclipse Public License v1.0 
 
6
 * which accompanies this distribution and is available at 
 
7
 * http://eclipse.org/legal/epl-v10.html 
 
8
 *  
 
9
 * Contributors: 
 
10
 *   Adrian Colyer                      Initial implementation
 
11
 * ******************************************************************/
 
12
package org.aspectj.weaver.patterns;
 
13
 
 
14
import org.aspectj.bridge.IMessage;
 
15
import org.aspectj.bridge.IMessageHandler;
 
16
import org.aspectj.bridge.IMessage.Kind;
 
17
import org.aspectj.weaver.IHasPosition;
 
18
import org.aspectj.weaver.ResolvedType;
 
19
import org.aspectj.weaver.TypeVariable;
 
20
import org.aspectj.weaver.UnresolvedType;
 
21
import org.aspectj.weaver.UnresolvedTypeVariableReferenceType;
 
22
import org.aspectj.weaver.World;
 
23
 
 
24
/**
 
25
 * A scope that also considers type variables when looking up a type.
 
26
 *
 
27
 */
 
28
public class ScopeWithTypeVariables implements IScope {
 
29
 
 
30
        private IScope delegateScope;
 
31
        private String[] typeVariableNames;
 
32
        private UnresolvedTypeVariableReferenceType[] typeVarTypeXs;
 
33
        
 
34
        public ScopeWithTypeVariables(String[] typeVarNames, IScope delegate) {
 
35
                this.delegateScope = delegate;
 
36
                this.typeVariableNames = typeVarNames;
 
37
                this.typeVarTypeXs = new UnresolvedTypeVariableReferenceType[typeVarNames.length];
 
38
        }
 
39
        
 
40
        /* (non-Javadoc)
 
41
         * @see org.aspectj.weaver.patterns.IScope#lookupType(java.lang.String, org.aspectj.weaver.IHasPosition)
 
42
         */
 
43
        public UnresolvedType lookupType(String name, IHasPosition location) {
 
44
                for (int i = 0; i < typeVariableNames.length; i++) {
 
45
                        if (typeVariableNames[i].equals(name)) {
 
46
                                if (typeVarTypeXs[i] == null) {
 
47
                                        typeVarTypeXs[i] = new UnresolvedTypeVariableReferenceType(new TypeVariable(name));
 
48
                                }
 
49
                                return typeVarTypeXs[i];
 
50
                        }
 
51
                }
 
52
                return delegateScope.lookupType(name, location);
 
53
        }
 
54
 
 
55
        /* (non-Javadoc)
 
56
         * @see org.aspectj.weaver.patterns.IScope#getWorld()
 
57
         */
 
58
        public World getWorld() {
 
59
                return delegateScope.getWorld();
 
60
        }
 
61
 
 
62
        /* (non-Javadoc)
 
63
         * @see org.aspectj.weaver.patterns.IScope#getEnclosingType()
 
64
         */
 
65
        public ResolvedType getEnclosingType() {
 
66
                return delegateScope.getEnclosingType();
 
67
        }
 
68
 
 
69
        /* (non-Javadoc)
 
70
         * @see org.aspectj.weaver.patterns.IScope#getMessageHandler()
 
71
         */
 
72
        public IMessageHandler getMessageHandler() {
 
73
                return delegateScope.getMessageHandler();
 
74
        }
 
75
 
 
76
        /* (non-Javadoc)
 
77
         * @see org.aspectj.weaver.patterns.IScope#lookupFormal(java.lang.String)
 
78
         */
 
79
        public FormalBinding lookupFormal(String name) {
 
80
                return delegateScope.lookupFormal(name);
 
81
        }
 
82
 
 
83
        /* (non-Javadoc)
 
84
         * @see org.aspectj.weaver.patterns.IScope#getFormal(int)
 
85
         */
 
86
        public FormalBinding getFormal(int i) {
 
87
                return delegateScope.getFormal(i);
 
88
        }
 
89
 
 
90
        /* (non-Javadoc)
 
91
         * @see org.aspectj.weaver.patterns.IScope#getFormalCount()
 
92
         */
 
93
        public int getFormalCount() {
 
94
                return delegateScope.getFormalCount();
 
95
        }
 
96
 
 
97
        /* (non-Javadoc)
 
98
         * @see org.aspectj.weaver.patterns.IScope#getImportedPrefixes()
 
99
         */
 
100
        public String[] getImportedPrefixes() {
 
101
                return delegateScope.getImportedPrefixes();
 
102
        }
 
103
 
 
104
        /* (non-Javadoc)
 
105
         * @see org.aspectj.weaver.patterns.IScope#getImportedNames()
 
106
         */
 
107
        public String[] getImportedNames() {
 
108
                return delegateScope.getImportedNames();
 
109
        }
 
110
 
 
111
        /* (non-Javadoc)
 
112
         * @see org.aspectj.weaver.patterns.IScope#message(org.aspectj.bridge.IMessage.Kind, org.aspectj.weaver.IHasPosition, java.lang.String)
 
113
         */
 
114
        public void message(Kind kind, IHasPosition location, String message) {
 
115
                delegateScope.message(kind, location, message);
 
116
        }
 
117
 
 
118
        /* (non-Javadoc)
 
119
         * @see org.aspectj.weaver.patterns.IScope#message(org.aspectj.bridge.IMessage.Kind, org.aspectj.weaver.IHasPosition, org.aspectj.weaver.IHasPosition, java.lang.String)
 
120
         */
 
121
        public void message(Kind kind, IHasPosition location1,
 
122
                        IHasPosition location2, String message) {
 
123
                delegateScope.message(kind,location1,location2,message);
 
124
        }
 
125
 
 
126
        public void message(IMessage aMessage) {
 
127
                delegateScope.message(aMessage);
 
128
        }
 
129
 
 
130
}