1 /*******************************************************************************
2 * Copyright (c) 2000, 2001, 2002 International Business Machines Corp. and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Common Public License v0.5
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/cpl-v05.html
9 * IBM Corporation - initial API and implementation
10 ******************************************************************************/
11 package net.sourceforge.phpdt.internal.compiler.lookup;
14 * Specific local variable location used to:
15 * - either provide emulation for outer local variables used from within innerclass constructs,
16 * - or provide emulation to enclosing instances.
17 * When it is mapping to an outer local variable, this actual outer local is accessible through
18 * the public field #actualOuterLocalVariable.
20 * Such a synthetic argument binding will be inserted in all constructors of local innertypes before
24 import net.sourceforge.phpdt.internal.compiler.util.CharOperation;
26 public class SyntheticArgumentBinding extends LocalVariableBinding {
29 this.isArgument = true;
32 // if the argument is mapping to an outer local variable, this denotes the outer actual variable
33 public LocalVariableBinding actualOuterLocalVariable;
34 // if the argument has a matching synthetic field
35 public FieldBinding matchingField;
37 final static char[] OuterLocalPrefix = { 'v', 'a', 'l', '$' };
38 final static char[] EnclosingInstancePrefix = { 't', 'h', 'i', 's', '$' };
39 public SyntheticArgumentBinding(LocalVariableBinding actualOuterLocalVariable) {
41 CharOperation.concat(OuterLocalPrefix, actualOuterLocalVariable.name),
42 actualOuterLocalVariable.type,
45 this.actualOuterLocalVariable = actualOuterLocalVariable;
47 public SyntheticArgumentBinding(ReferenceBinding enclosingType) {
50 SyntheticArgumentBinding.EnclosingInstancePrefix,
51 String.valueOf(enclosingType.depth()).toCharArray()),