Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 394549
Collapse All | Expand All

(-)a/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testGenericNested/in/GenericNested.java (+8 lines)
Added Link Here
1
package p;
2
3
class GenericNested<T> {
4
    C m;
5
6
    class C {
7
    }
8
}
(-)a/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractClass/testGenericNested/out/GenericNested.java (+14 lines)
Added Link Here
1
package p;
2
3
class GenericNested<T> {
4
    public static class Extracted<T> {
5
		public GenericNested<T>.C m;
6
		public Extracted() {
7
		}
8
	}
9
10
	Extracted<T> parameterObject = new Extracted<T>();
11
12
	class C {
13
    }
14
}
(-)a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/ExtractClassTests.java (-1 / +12 lines)
Lines 6-16 Link Here
6
 * http://www.eclipse.org/legal/epl-v10.html
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
7
 *
8
 * Contributors:
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
9
 *     IBM Corporation - initial API and implementation
10
 *     Nikolay Metchev <nikolaymetchev@gmail.com> - [extract class] Extract class refactoring on a field in an inner non-static class yields compilation error - https://bugs.eclipse.org/394547
10
 *     Nikolay Metchev <nikolaymetchev@gmail.com> - [extract class] Extract class refactoring on a field in an inner non-static class yields compilation error - https://bugs.eclipse.org/394547
11
 *     Samrat Dhillon samrat.dhillon@gmail.com - [extract class] Extract class on a field with generic type yields compilation error  - https://bugs.eclipse.org/bugs/show_bug.cgi?id=394548
11
 *                                                - [extract class] Extract class on a field with inner non-static type in generic class yields compilation error - https://bugs.eclipse.org/394549
12
 *     Samrat Dhillon samrat.dhillon@gmail.com - [extract class] Extract class on a field with generic type yields compilation error  - https://bugs.eclipse.org/394548
12
 *******************************************************************************/
13
 *******************************************************************************/
13
package org.eclipse.jdt.ui.tests.refactoring;
14
package org.eclipse.jdt.ui.tests.refactoring;
14
15
15
import java.io.IOException;
16
import java.io.IOException;
16
import java.util.HashMap;
17
import java.util.HashMap;
Lines 431-440 Link Here
431
		fDescriptor.setType(inner);
432
		fDescriptor.setType(inner);
432
		fDescriptor.setClassName("Extracted");
433
		fDescriptor.setClassName("Extracted");
433
		fDescriptor.setCreateTopLevel(false);
434
		fDescriptor.setCreateTopLevel(false);
434
		runRefactoring(false);
435
		runRefactoring(false);
435
	}
436
	}
437
	
438
	// see bug 394549
439
	public void testGenericNested() throws Exception {
440
		IType outer= setupType();
441
		fDescriptor.setType(outer);
442
		fDescriptor.setClassName("Extracted");
443
		fDescriptor.setCreateTopLevel(false);
444
		runRefactoring(false);
445
	}
446
	
436
	// see bug 394548
447
	// see bug 394548
437
	public void testTypeParameter() throws Exception {
448
	public void testTypeParameter() throws Exception {
438
		fDescriptor.setType(setupType());
449
		fDescriptor.setType(setupType());
439
		fDescriptor.setCreateTopLevel(false);
450
		fDescriptor.setCreateTopLevel(false);
440
		fDescriptor.setFieldName("data");
451
		fDescriptor.setFieldName("data");
(-)a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ExtractClassRefactoring.java (-5 / +10 lines)
Lines 6-15 Link Here
6
 * http://www.eclipse.org/legal/epl-v10.html
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
7
 *
8
 * Contributors:
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
9
 *     IBM Corporation - initial API and implementation
10
 *     Nikolay Metchev <nikolaymetchev@gmail.com> - [extract class] Extract class refactoring on a field in an inner non-static class yields compilation error - https://bugs.eclipse.org/394547
10
 *     Nikolay Metchev <nikolaymetchev@gmail.com> - [extract class] Extract class refactoring on a field in an inner non-static class yields compilation error - https://bugs.eclipse.org/394547
11
 *                                                - [extract class] Extract class on a field with inner non-static type in generic class yields compilation error - https://bugs.eclipse.org/394549
11
 *******************************************************************************/
12
 *******************************************************************************/
12
package org.eclipse.jdt.internal.corext.refactoring.structure;
13
package org.eclipse.jdt.internal.corext.refactoring.structure;
13
14
14
import java.util.ArrayList;
15
import java.util.ArrayList;
15
import java.util.Arrays;
16
import java.util.Arrays;
Lines 357-368 Link Here
357
					}
358
					}
358
				}
359
				}
359
			}
360
			}
360
			pm.worked(5);
361
			pm.worked(5);
361
			fChangeManager= new TextChangeManager();
362
			fChangeManager= new TextChangeManager();
362
			fParameterObjectFactory= initializeFactory();
363
			IType type= fDescriptor.getType();
363
			IType type= fDescriptor.getType();
364
			fBaseCURewrite= new CompilationUnitRewrite(type.getCompilationUnit());
365
			fParameterObjectFactory= initializeFactory();
364
			pm.worked(5);
366
			pm.worked(5);
365
367
366
			FieldDeclaration field= performFieldRewrite(type, fParameterObjectFactory, result);
368
			FieldDeclaration field= performFieldRewrite(type, fParameterObjectFactory, result);
367
			int flags= RefactoringDescriptor.STRUCTURAL_CHANGE | JavaRefactoringDescriptor.JAR_MIGRATION | JavaRefactoringDescriptor.JAR_REFACTORING | JavaRefactoringDescriptor.JAR_SOURCE_ATTACHMENT;
369
			int flags= RefactoringDescriptor.STRUCTURAL_CHANGE | JavaRefactoringDescriptor.JAR_MIGRATION | JavaRefactoringDescriptor.JAR_REFACTORING | JavaRefactoringDescriptor.JAR_SOURCE_ATTACHMENT;
368
			if (!Modifier.isPrivate(field.getModifiers()))
370
			if (!Modifier.isPrivate(field.getModifiers()))
Lines 498-514 Link Here
498
		ITypeBinding binding= enclosingTypeDecl.resolveBinding();
500
		ITypeBinding binding= enclosingTypeDecl.resolveBinding();
499
		int modifiers= binding != null ? binding.getModifiers() : enclosingTypeDecl.getModifiers();
501
		int modifiers= binding != null ? binding.getModifiers() : enclosingTypeDecl.getModifiers();
500
		return Modifier.isStatic(modifiers);
502
		return Modifier.isStatic(modifiers);
501
	}
503
	}
502
504
503
	private ParameterObjectFactory initializeFactory() {
505
	private ParameterObjectFactory initializeFactory() throws JavaModelException {
504
		ParameterObjectFactory pof= new ParameterObjectFactory();
506
		ParameterObjectFactory pof= new ParameterObjectFactory();
505
		pof.setClassName(fDescriptor.getClassName());
507
		pof.setClassName(fDescriptor.getClassName());
506
		pof.setPackage(fDescriptor.getPackage());
508
		pof.setPackage(fDescriptor.getPackage());
507
		pof.setEnclosingType(fDescriptor.getType().getFullyQualifiedName('.'));
509
		pof.setEnclosingType(fDescriptor.getType().getFullyQualifiedName('.'));
508
		pof.setCreateGetter(fDescriptor.isCreateGetterSetter());
510
		pof.setCreateGetter(fDescriptor.isCreateGetterSetter());
509
		pof.setCreateSetter(fDescriptor.isCreateGetterSetter());
511
		pof.setCreateSetter(fDescriptor.isCreateGetterSetter());
512
		TypeDeclaration typeDecl= ASTNodeSearchUtil.getTypeDeclarationNode(fDescriptor.getType(), fBaseCURewrite.getRoot());
513
		if (!fDescriptor.isCreateTopLevel()) {
514
			pof.setImportRewriteContext(pof.createParameterClassAwareContext(fDescriptor.isCreateTopLevel(), fBaseCURewrite, typeDecl.getStartPosition()));
515
		}
510
		List<ParameterInfo> variables= new ArrayList<ParameterInfo>();
516
		List<ParameterInfo> variables= new ArrayList<ParameterInfo>();
511
		for (Iterator<FieldInfo> iterator= fVariables.values().iterator(); iterator.hasNext();) {
517
		for (Iterator<FieldInfo> iterator= fVariables.values().iterator(); iterator.hasNext();) {
512
			FieldInfo info= iterator.next();
518
			FieldInfo info= iterator.next();
513
			boolean createField= isCreateField(info);
519
			boolean createField= isCreateField(info);
514
			info.pi.setCreateField(createField);
520
			info.pi.setCreateField(createField);
Lines 720-730 Link Here
720
	private FieldInfo getFieldInfo(String identifier) {
726
	private FieldInfo getFieldInfo(String identifier) {
721
		return fVariables.get(identifier);
727
		return fVariables.get(identifier);
722
	}
728
	}
723
729
724
	private FieldDeclaration performFieldRewrite(IType type, ParameterObjectFactory pof, RefactoringStatus status) throws CoreException {
730
	private FieldDeclaration performFieldRewrite(IType type, ParameterObjectFactory pof, RefactoringStatus status) throws CoreException {
725
		fBaseCURewrite= new CompilationUnitRewrite(type.getCompilationUnit());
726
		SimpleName name= (SimpleName) NodeFinder.perform(fBaseCURewrite.getRoot(), type.getNameRange());
731
		SimpleName name= (SimpleName) NodeFinder.perform(fBaseCURewrite.getRoot(), type.getNameRange());
727
		TypeDeclaration typeNode= (TypeDeclaration) ASTNodes.getParent(name, ASTNode.TYPE_DECLARATION);
732
		TypeDeclaration typeNode= (TypeDeclaration) ASTNodes.getParent(name, ASTNode.TYPE_DECLARATION);
728
		ASTRewrite rewrite= fBaseCURewrite.getASTRewrite();
733
		ASTRewrite rewrite= fBaseCURewrite.getASTRewrite();
729
		int modifier= Modifier.PRIVATE;
734
		int modifier= Modifier.PRIVATE;
730
		TextEditGroup removeFieldGroup= fBaseCURewrite.createGroupDescription(RefactoringCoreMessages.ExtractClassRefactoring_group_remove_field);
735
		TextEditGroup removeFieldGroup= fBaseCURewrite.createGroupDescription(RefactoringCoreMessages.ExtractClassRefactoring_group_remove_field);
Lines 820-830 Link Here
820
					ASTNode createMoveTarget= fBaseCURewrite.getASTRewrite().createMoveTarget(expression);
825
					ASTNode createMoveTarget= fBaseCURewrite.getASTRewrite().createMoveTarget(expression);
821
					if (expression instanceof ArrayInitializer) {
826
					if (expression instanceof ArrayInitializer) {
822
						ArrayInitializer ai= (ArrayInitializer) expression;
827
						ArrayInitializer ai= (ArrayInitializer) expression;
823
						ITypeBinding componentType= ai.resolveTypeBinding().getComponentType();
828
						ITypeBinding componentType= ai.resolveTypeBinding().getComponentType();
824
						ArrayCreation arrayCreation= ast.newArrayCreation();
829
						ArrayCreation arrayCreation= ast.newArrayCreation();
825
						Type addImport= fBaseCURewrite.getImportRewrite().addImport(componentType, ast);
830
						Type addImport= fBaseCURewrite.getImportRewrite().addImport(componentType, ast, fParameterObjectFactory.getImportRewriteContext());
826
						fBaseCURewrite.getImportRemover().registerAddedImports(addImport);
831
						fBaseCURewrite.getImportRemover().registerAddedImports(addImport);
827
						arrayCreation.setType(ast.newArrayType(addImport));
832
						arrayCreation.setType(ast.newArrayType(addImport));
828
						arrayCreation.setInitializer((ArrayInitializer) createMoveTarget);
833
						arrayCreation.setInitializer((ArrayInitializer) createMoveTarget);
829
						listRewrite.insertLast(arrayCreation, null);
834
						listRewrite.insertLast(arrayCreation, null);
830
					} else {
835
					} else {
Lines 855-865 Link Here
855
	}
860
	}
856
861
857
	private void importNodeTypes(ASTNode node, final CompilationUnitRewrite cuRewrite) {
862
	private void importNodeTypes(ASTNode node, final CompilationUnitRewrite cuRewrite) {
858
		ASTResolving.visitAllBindings(node, new TypeBindingVisitor() {
863
		ASTResolving.visitAllBindings(node, new TypeBindingVisitor() {
859
			public boolean visit(ITypeBinding nodeBinding) {
864
			public boolean visit(ITypeBinding nodeBinding) {
860
				ParameterObjectFactory.importBinding(nodeBinding, cuRewrite);
865
				fParameterObjectFactory.importBinding(nodeBinding, cuRewrite);
861
				return false;
866
				return false;
862
			}
867
			}
863
		});
868
		});
864
	}
869
	}
865
870
(-)a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/ParameterObjectFactory.java (-4 / +58 lines)
Lines 5-15 Link Here
5
 * which accompanies this distribution, and is available at
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
7
 *
8
 * Contributors:
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
9
 *     IBM Corporation - initial API and implementation
10
 *     Samrat Dhillon samrat.dhillon@gmail.com https://bugs.eclipse.org/bugs/show_bug.cgi?id=395558 , https://bugs.eclipse.org/bugs/show_bug.cgi?id=395561 and https://bugs.eclipse.org/bugs/show_bug.cgi?id=394548
10
 *     Samrat Dhillon samrat.dhillon@gmail.com https://bugs.eclipse.org/395558 , https://bugs.eclipse.org/395561 and https://bugs.eclipse.org/394548
11
 *     Nikolay Metchev <nikolaymetchev@gmail.com> - [extract class] Extract class on a field with inner non-static type in generic class yields compilation error - https://bugs.eclipse.org/394549
11
 *******************************************************************************/
12
 *******************************************************************************/
12
package org.eclipse.jdt.internal.corext.refactoring.structure;
13
package org.eclipse.jdt.internal.corext.refactoring.structure;
13
14
14
import java.util.ArrayList;
15
import java.util.ArrayList;
15
import java.util.Iterator;
16
import java.util.Iterator;
Lines 54-64 Link Here
54
import org.eclipse.jdt.core.dom.MethodDeclaration;
55
import org.eclipse.jdt.core.dom.MethodDeclaration;
55
import org.eclipse.jdt.core.dom.MethodInvocation;
56
import org.eclipse.jdt.core.dom.MethodInvocation;
56
import org.eclipse.jdt.core.dom.Modifier;
57
import org.eclipse.jdt.core.dom.Modifier;
57
import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword;
58
import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword;
58
import org.eclipse.jdt.core.dom.Name;
59
import org.eclipse.jdt.core.dom.Name;
60
import org.eclipse.jdt.core.dom.ParameterizedType;
61
import org.eclipse.jdt.core.dom.QualifiedType;
59
import org.eclipse.jdt.core.dom.SimpleName;
62
import org.eclipse.jdt.core.dom.SimpleName;
63
import org.eclipse.jdt.core.dom.SimpleType;
60
import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
64
import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
61
import org.eclipse.jdt.core.dom.Statement;
65
import org.eclipse.jdt.core.dom.Statement;
62
import org.eclipse.jdt.core.dom.SuperFieldAccess;
66
import org.eclipse.jdt.core.dom.SuperFieldAccess;
63
import org.eclipse.jdt.core.dom.Type;
67
import org.eclipse.jdt.core.dom.Type;
64
import org.eclipse.jdt.core.dom.TypeDeclaration;
68
import org.eclipse.jdt.core.dom.TypeDeclaration;
Lines 90-99 Link Here
90
	private String fClassName;
94
	private String fClassName;
91
	private boolean fCreateGetter;
95
	private boolean fCreateGetter;
92
	private boolean fCreateSetter;
96
	private boolean fCreateSetter;
93
	private String fEnclosingType;
97
	private String fEnclosingType;
94
	private String fPackage;
98
	private String fPackage;
99
100
	private ImportRewriteContext fImportRewriteContext;
95
	private List<ParameterInfo> fVariables;
101
	private List<ParameterInfo> fVariables;
96
102
97
	public ParameterObjectFactory() {
103
	public ParameterObjectFactory() {
98
		super();
104
		super();
99
	}
105
	}
Lines 198-207 Link Here
198
				if(oldTypeBinding != null && oldTypeBinding.isTypeVariable()){
204
				if(oldTypeBinding != null && oldTypeBinding.isTypeVariable()){
199
					TypeParameter param= ast.newTypeParameter();
205
					TypeParameter param= ast.newTypeParameter();
200
					param.setName(ast.newSimpleName(pi.getNewTypeName()));
206
					param.setName(ast.newSimpleName(pi.getNewTypeName()));
201
					typeDeclaration.typeParameters().add(param);
207
					typeDeclaration.typeParameters().add(param);
202
				}
208
				}
209
				Type declarationType= declaration.getType();
210
				if (declarationType.getNodeType() == ASTNode.QUALIFIED_TYPE) {
211
					Type qualifier= ((QualifiedType) declarationType).getQualifier();
212
					if (qualifier.isParameterizedType()) {
213
						for (Type type : (List<Type>) ((ParameterizedType) qualifier).typeArguments()) {
214
							TypeParameter typeParameter= ast.newTypeParameter();
215
							typeParameter.setName(ast.newSimpleName(((SimpleType) type).getName().getFullyQualifiedName()));
216
							typeDeclaration.typeParameters().add(typeParameter);
217
						}
218
					}
219
				}
203
			}
220
			}
204
		}
221
		}
205
		MethodDeclaration constructor= createConstructor(declaringType, cuRewrite, listener);
222
		MethodDeclaration constructor= createConstructor(declaringType, cuRewrite, listener);
206
		listener.constructorCreated(cuRewrite, constructor);
223
		listener.constructorCreated(cuRewrite, constructor);
207
		body.add(constructor);
224
		body.add(constructor);
Lines 296-313 Link Here
296
		String[] suggestions= StubUtility.getVariableNameSuggestions(NamingConventions.VK_PARAMETER, project, strippedName, 0, usedParameter, true);
313
		String[] suggestions= StubUtility.getVariableNameSuggestions(NamingConventions.VK_PARAMETER, project, strippedName, 0, usedParameter, true);
297
		return suggestions[0];
314
		return suggestions[0];
298
	}
315
	}
299
316
300
317
301
	public static Type importBinding(ITypeBinding typeBinding, CompilationUnitRewrite cuRewrite) {
318
	public Type importBinding(ITypeBinding typeBinding, CompilationUnitRewrite cuRewrite) {
302
		int declaredModifiers= typeBinding.getDeclaredModifiers();
319
		int declaredModifiers= typeBinding.getDeclaredModifiers();
303
		AST ast= cuRewrite.getAST();
320
		AST ast= cuRewrite.getAST();
304
		if (Modifier.isPrivate(declaredModifiers) || Modifier.isProtected(declaredModifiers)) {
321
		if (Modifier.isPrivate(declaredModifiers) || Modifier.isProtected(declaredModifiers)) {
305
			return ast.newSimpleType(ast.newSimpleName(typeBinding.getName()));
322
			return ast.newSimpleType(ast.newSimpleName(typeBinding.getName()));
306
		}
323
		}
307
		Type type= cuRewrite.getImportRewrite().addImport(typeBinding, cuRewrite.getAST());
324
		Type type= cuRewrite.getImportRewrite().addImport(typeBinding, cuRewrite.getAST(), fImportRewriteContext);
308
		cuRewrite.getImportRemover().registerAddedImports(type);
325
		cuRewrite.getImportRemover().registerAddedImports(type);
326
		if (typeBinding.isNested()) {
327
			ITypeBinding declaringClass= typeBinding.getDeclaringClass();
328
			if (Modifier.isStatic(typeBinding.getModifiers())) {
329
				declaringClass= declaringClass.getErasure();
330
			}
331
			Type newQualification= importBinding(declaringClass, cuRewrite);
332
			cuRewrite.getImportRemover().registerAddedImports(type);
333
			type= ast.newQualifiedType(newQualification, (SimpleName) ASTNode.copySubtree(ast, ((SimpleType) type).getName()));
334
		}
309
		return type;
335
		return type;
310
	}
336
	}
311
337
312
	private FieldDeclaration createField(ParameterInfo pi, CompilationUnitRewrite cuRewrite) throws CoreException {
338
	private FieldDeclaration createField(ParameterInfo pi, CompilationUnitRewrite cuRewrite) throws CoreException {
313
		AST ast= cuRewrite.getAST();
339
		AST ast= cuRewrite.getAST();
Lines 477-487 Link Here
477
		ImportRewrite importRewrite= cuRewrite.getImportRewrite();
503
		ImportRewrite importRewrite= cuRewrite.getImportRewrite();
478
		ContextSensitiveImportRewriteContext context= createParameterClassAwareContext(asTopLevelClass, cuRewrite, position);
504
		ContextSensitiveImportRewriteContext context= createParameterClassAwareContext(asTopLevelClass, cuRewrite, position);
479
		String addedImport= importRewrite.addImport(concatenateName, context);
505
		String addedImport= importRewrite.addImport(concatenateName, context);
480
		cuRewrite.getImportRemover().registerAddedImport(addedImport);
506
		cuRewrite.getImportRemover().registerAddedImport(addedImport);
481
		AST ast= cuRewrite.getAST();
507
		AST ast= cuRewrite.getAST();
482
		return ast.newSimpleType(ast.newName(addedImport));
508
		SimpleType newSimpleType= ast.newSimpleType(ast.newName(addedImport));
509
		ParameterizedType parameterizedType= null;
510
		CompilationUnitRewrite dummyCuRewrite= new CompilationUnitRewrite(cuRewrite.getCu());
511
		for (Iterator<ParameterInfo> iter= fVariables.iterator(); iter.hasNext();) {
512
			ParameterInfo pi= iter.next();
513
			if (isValidField(pi)) {
514
				Type importBinding= importBinding(pi.getNewTypeBinding(), dummyCuRewrite);
515
				if (importBinding.getNodeType() == ASTNode.QUALIFIED_TYPE) {
516
					Type fieldQualifier= ((QualifiedType) importBinding).getQualifier();
517
					if (fieldQualifier.isParameterizedType()) {
518
						if (parameterizedType == null) {
519
							parameterizedType= ast.newParameterizedType(newSimpleType);
520
						}
521
						for (Type type : (List<Type>) ((ParameterizedType) fieldQualifier).typeArguments()) {
522
							parameterizedType.typeArguments().add(ASTNode.copySubtree(ast, type));
523
						}
524
					}
525
				}
526
			}
527
		}
528
		return parameterizedType == null ? newSimpleType : parameterizedType;
483
	}
529
	}
484
530
485
	ContextSensitiveImportRewriteContext createParameterClassAwareContext(final boolean asTopLevelClass, final CompilationUnitRewrite cuRewrite, int position) {
531
	ContextSensitiveImportRewriteContext createParameterClassAwareContext(final boolean asTopLevelClass, final CompilationUnitRewrite cuRewrite, int position) {
486
		ContextSensitiveImportRewriteContext context= new ContextSensitiveImportRewriteContext(cuRewrite.getRoot(), position, cuRewrite.getImportRewrite()) {
532
		ContextSensitiveImportRewriteContext context= new ContextSensitiveImportRewriteContext(cuRewrite.getRoot(), position, cuRewrite.getImportRewrite()) {
487
			@Override
533
			@Override
Lines 598-607 Link Here
598
644
599
	public void setVariables(List<ParameterInfo> parameters) {
645
	public void setVariables(List<ParameterInfo> parameters) {
600
		fVariables= parameters;
646
		fVariables= parameters;
601
	}
647
	}
602
648
649
	public void setImportRewriteContext(ImportRewriteContext importRewriteContext) {
650
		fImportRewriteContext= importRewriteContext;
651
	}
652
653
	public ImportRewriteContext getImportRewriteContext() {
654
		return fImportRewriteContext;
655
	}
656
603
	/**
657
	/**
604
	 * Updates the position of the newly inserted parameterObject so that it is
658
	 * Updates the position of the newly inserted parameterObject so that it is
605
	 * directly after the first checked parameter
659
	 * directly after the first checked parameter
606
	 *
660
	 *
607
	 * @param parameterObjectReference the inserted parameterObject
661
	 * @param parameterObjectReference the inserted parameterObject

Return to bug 394549