Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2000, 2012 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html Contributors: IBM Corporation - initial API and implementation Stephan Herrmann - Contributions for bug 186342 - [compiler][null] Using annotations for null checking bug 365519 - editorial cleanup after bug 186342 and bug 365387 /
 
 package org.eclipse.jdt.internal.compiler.ast;
 
 
 public class Argument extends LocalDeclaration {
 
 	// prefix for setter method (to recognize special hiding argument)
 	private final static char[] SET = "set".toCharArray(); //$NON-NLS-1$
 
 	public Argument(char[] namelong posNomTypeReference trint modifiers) {
 
 		super(name, (int) (posNom >>> 32), (intposNom);
 		this. = (intposNom;
 		this. = modifiers;
 		this. = tr;
 	}
 
 	public void createBinding(MethodScope scopeTypeBinding typeBinding) {
 		if (this. == null) {
 			// for default constructors and fake implementation of abstract methods 
 			this. = new LocalVariableBinding(thistypeBindingthis.true /*isArgument*/);
 		} else if (!this...isValidBinding()) {
 			AbstractMethodDeclaration methodDecl = scope.referenceMethod();
 			if (methodDecl != null) {
 				MethodBinding methodBinding = methodDecl.binding;
 				if (methodBinding != null) {
 					methodBinding.tagBits |= .;
 				}
 			}
 		}
 		resolveAnnotations(scopethis.this.);
 		this.. = this;
 	}
 
 	public void bind(MethodScope scopeTypeBinding typeBindingboolean used) {
 		createBinding(scopetypeBinding); // basically a no-op if createBinding() was called before
 
 		// record the resolved type into the type reference
 		Binding existingVariable = scope.getBinding(this..thisfalse /*do not resolve hidden field*/);
 		if (existingVariable != null && existingVariable.isValidBinding()){
 			if (existingVariable instanceof LocalVariableBinding && this. == 0) {
 			} else {
 				boolean isSpecialArgument = false;
 				if (existingVariable instanceof FieldBinding) {
 					if (scope.isInsideConstructor()) {
 						isSpecialArgument = true// constructor argument
 					} else {
 						AbstractMethodDeclaration methodDecl = scope.referenceMethod();
 						if (methodDecl != null && CharOperation.prefixEquals(methodDecl.selector)) {
 							isSpecialArgument = true// setter argument
 						}
 					}
 				}
 				scope.problemReporter().localVariableHiding(thisexistingVariableisSpecialArgument);
 			}
 		}
 		scope.addLocalVariable(this.);
 	}

 
 	public int getKind() {
 		return (this. & .) != 0 ?  : ;
 	}
 
 	public boolean isVarArgs() {
 		return this. != null &&  (this.. & ) != 0;
 	}
 
 	public StringBuffer print(int indentStringBuffer output) {
 
 		printIndent(indentoutput);
 		printModifiers(this.output);
 		if (this. != nullprintAnnotations(this.output);
 
 		if (this. == null) {
 			output.append("<no type> "); //$NON-NLS-1$
 		} else {
			this..print(0, output).append(' ');
		}
		return output.append(this.);
	}
	public StringBuffer printStatement(int indentStringBuffer output) {
		return print(indentoutput).append(';');
	}
		// resolution on an argument of a catch clause
		// provide the scope with a side effect : insertion of a LOCAL
		// that represents the argument. The type must be from JavaThrowable
		TypeBinding exceptionType = this..resolveType(scopetrue /* check bounds*/);
		boolean hasError;
		if (exceptionType == null) {
			hasError = true;
else {
			hasError = false;
			switch(exceptionType.kind()) {
					if (exceptionType.isBoundParameterizedType()) {
						hasError = true;
						// fall thru to create the variable - avoids additional errors because the variable is missing
					}
					break;
					scope.problemReporter().invalidTypeVariableAsException(exceptionTypethis);
					hasError = true;
					// fall thru to create the variable - avoids additional errors because the variable is missing
					break;
			}
			if (exceptionType.findSuperTypeOriginatingFrom(.true) == null && exceptionType.isValidBinding()) {
				scope.problemReporter().cannotThrowType(this.exceptionType);
				hasError = true;
				// fall thru to create the variable - avoids additional errors because the variable is missing
			}
		}
		Binding existingVariable = scope.getBinding(this..thisfalse /*do not resolve hidden field*/);
		if (existingVariable != null && existingVariable.isValidBinding()){
			if (existingVariable instanceof LocalVariableBinding && this. == 0) {
else {
				scope.problemReporter().localVariableHiding(thisexistingVariablefalse);
			}
		}
		if ((this.. & .) != 0) {
			this. = new CatchParameterBinding(thisexceptionTypethis. | .false); // argument decl, but local var  (where isArgument = false)
else {
			this. = new CatchParameterBinding(thisexceptionTypethis.false); // argument decl, but local var  (where isArgument = false)
		}
		if (hasErrorreturn null;
		return exceptionType;
	}
	public void traverse(ASTVisitor visitorBlockScope scope) {
		if (visitor.visit(thisscope)) {
			if (this. != null) {
				int annotationsLength = this..length;
				for (int i = 0; i < annotationsLengthi++)
					this.[i].traverse(visitorscope);
			}
			if (this. != null)
				this..traverse(visitorscope);
		}
		visitor.endVisit(thisscope);
	}
	public void traverse(ASTVisitor visitorClassScope scope) {
		if (visitor.visit(thisscope)) {
			if (this. != null) {
				int annotationsLength = this..length;
				for (int i = 0; i < annotationsLengthi++)
					this.[i].traverse(visitorscope);
			}
			if (this. != null)
				this..traverse(visitorscope);
		}
		visitor.endVisit(thisscope);
	}
New to GrepCode? Check out our FAQ X