Index: trunk/abdev/BasicCompiler32/CParameter.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/CParameter.cpp	(revision 299)
+++ trunk/abdev/BasicCompiler32/CParameter.cpp	(revision 301)
@@ -159,5 +159,5 @@
 }
 
-int ParamImpl::SetParameter( const string &procName, const Parameters &params, int SecondParmNum ){
+int ParamImpl::SetParameter( const string &procName, const Parameters &params, int SecondParmNum, const UserProc *pUserProc ){
 	if( SecondParmNum == -1 ) SecondParmNum = (int)params.size();
 
@@ -215,5 +215,5 @@
 
 			// 型パラメータを解決
-			ResolveFormalGenericTypeParameter( dummyType, leftType );
+			ResolveFormalGenericTypeParameter( dummyType, leftType, pUserProc );
 		}
 
Index: trunk/abdev/BasicCompiler32/Compile_CallProc.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/Compile_CallProc.cpp	(revision 299)
+++ trunk/abdev/BasicCompiler32/Compile_CallProc.cpp	(revision 301)
@@ -244,5 +244,5 @@
 
 	//レジスタ、スタックフレームにセット
-	int ParmSize = pobj_parameter->SetParameter(pUserProc->GetName(),pUserProc->RealParams(),pUserProc->GetRealSecondParmNum() );
+	int ParmSize = pobj_parameter->SetParameter(pUserProc->GetName(),pUserProc->RealParams(),pUserProc->GetRealSecondParmNum(), pUserProc );
 
 	if(pUserProc->ReturnType().IsStruct() ){
Index: trunk/abdev/BasicCompiler32/Compile_Func.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/Compile_Func.cpp	(revision 299)
+++ trunk/abdev/BasicCompiler32/Compile_Func.cpp	(revision 301)
@@ -357,15 +357,4 @@
 
 	SetVarPtrToEax(&RelativeVar);
-
-	// TODO: 取り除く（この動きはObjPtrに託す）
-	/*
-	if( beforeType == DEF_OBJECT && lstrcmpi( Parameter, "This" ) != 0 ){
-		//参照をオブジェクトポインタに変更
-
-		//mov eax,dword ptr[eax]
-		compiler.codeGenerator.op_mov_RM( sizeof(long), REG_EAX, REG_EAX, 0, MOD_BASE );
-
-		SetError(-120,NULL,cp);
-	}*/
 }
 void Opcode_Func_ObjPtr( const char *Parameter, Type &resultType, bool isCallOn ){
Index: trunk/abdev/BasicCompiler32/Compile_Var.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/Compile_Var.cpp	(revision 299)
+++ trunk/abdev/BasicCompiler32/Compile_Var.cpp	(revision 301)
@@ -726,8 +726,10 @@
 		}
 
+		Type classType( resultType );
+
 		if(!_member_offset(
 			isErrorEnabled,
 			isWriteAccess,
-			resultType,
+			classType,
 			member,pRelativeVar,resultType,0)) return false;
 
Index: trunk/abdev/BasicCompiler32/NumOpe.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/NumOpe.cpp	(revision 299)
+++ trunk/abdev/BasicCompiler32/NumOpe.cpp	(revision 301)
@@ -233,9 +233,4 @@
 bool TermOpe( const char *term, const Type &baseType, Type &resultType, bool &isLiteral, BOOL *pbUseHeap, bool isWantObject, bool *pIsClassName, bool isProcedureCallOnly ){
 	char parameter[VN_SIZE];
-
-	if( (string)term=="a[1]")
-	{
-		int test=0;
-	}
 
 	// Withを解決
Index: trunk/abdev/BasicCompiler32/Opcode.h
===================================================================
--- trunk/abdev/BasicCompiler32/Opcode.h	(revision 299)
+++ trunk/abdev/BasicCompiler32/Opcode.h	(revision 301)
@@ -203,5 +203,5 @@
 	void MacroParameterSupport( const Parameters &params );
 	void SetStructParameter( const Type &baseType, const char *expression );
-	int SetParameter( const string &procName, const Parameters &params, int SecondParmNum = -1 );
+	int SetParameter( const string &procName, const Parameters &params, int SecondParmNum = -1, const UserProc *pUserProc = NULL );
 
 	//一時オブジェクトパラメータの生成と破棄
