comparison dmd/FuncDeclaration.d @ 84:be2ab491772e

Expressions -> Vector!Expression
author Eldar Insafutdinov <e.insafutdinov@gmail.com>
date Mon, 30 Aug 2010 16:12:19 +0100
parents 43073c7c7769
children 23280d154c5b
comparison
equal deleted inserted replaced
83:ee670dd808a8 84:be2ab491772e
1927 e.type = p.type; 1927 e.type = p.type;
1928 } 1928 }
1929 else 1929 else
1930 e = p.type.defaultInit(Loc(0)); 1930 e = p.type.defaultInit(Loc(0));
1931 1931
1932 args.data[u] = cast(void*)e; 1932 args[u] = e;
1933 } 1933 }
1934 1934
1935 MATCH m = cast(MATCH) tg.callMatch(null, args); 1935 MATCH m = cast(MATCH) tg.callMatch(null, args);
1936 if (m) 1936 if (m)
1937 { 1937 {
2391 { 2391 {
2392 cantInterpret = 1; 2392 cantInterpret = 1;
2393 return null; 2393 return null;
2394 } 2394 }
2395 } 2395 }
2396 eargs.data[i] = cast(void*)earg; 2396 eargs[i] = earg;
2397 } 2397 }
2398 2398
2399 for (size_t i = 0; i < dim; i++) 2399 for (size_t i = 0; i < dim; i++)
2400 { 2400 {
2401 Expression earg = cast(Expression)eargs.data[i]; 2401 auto earg = eargs[i];
2402 Argument arg = Argument.getNth(tf.parameters, i); 2402 Argument arg = Argument.getNth(tf.parameters, i);
2403 auto v = cast(VarDeclaration)parameters[i]; 2403 auto v = cast(VarDeclaration)parameters[i];
2404 vsave.data[i] = cast(void*)v.value; 2404 vsave[i] = v.value;
2405 version (LOG) { 2405 version (LOG) {
2406 printf("arg[%d] = %s\n", i, earg.toChars()); 2406 printf("arg[%d] = %s\n", i, earg.toChars());
2407 } 2407 }
2408 if (arg.storageClass & (STCout | STCref) && earg.op==TOKvar) 2408 if (arg.storageClass & (STCout | STCref) && earg.op==TOKvar)
2409 { 2409 {
2490 foreach (size_t i, Dsymbol s3; istate.vars) 2490 foreach (size_t i, Dsymbol s3; istate.vars)
2491 { 2491 {
2492 if (auto v = cast(VarDeclaration)s3) 2492 if (auto v = cast(VarDeclaration)s3)
2493 { 2493 {
2494 //printf("\tsaving [%d] %s = %s\n", i, v.toChars(), v.value ? v.value.toChars() : ""); 2494 //printf("\tsaving [%d] %s = %s\n", i, v.toChars(), v.value ? v.value.toChars() : "");
2495 valueSaves.data[i] = cast(void*)v.value; 2495 valueSaves[i] = v.value;
2496 v.value = null; 2496 v.value = null;
2497 } 2497 }
2498 } 2498 }
2499 } 2499 }
2500 2500
2696 printf("\t2: no %s\n", toChars()); 2696 printf("\t2: no %s\n", toChars());
2697 } 2697 }
2698 return 0; 2698 return 0;
2699 } 2699 }
2700 2700
2701 Expression doInline(InlineScanState* iss, Expression ethis, Array arguments) 2701 Expression doInline(InlineScanState* iss, Expression ethis, Expressions arguments)
2702 { 2702 {
2703 InlineDoState ids = new InlineDoState(); 2703 InlineDoState ids = new InlineDoState();
2704 DeclarationExp de; 2704 DeclarationExp de;
2705 Expression e = null; 2705 Expression e = null;
2706 2706
3752 } 3752 }
3753 3753
3754 override FuncDeclaration isFuncDeclaration() { return this; } 3754 override FuncDeclaration isFuncDeclaration() { return this; }
3755 } 3755 }
3756 3756
3757 class FuncDeclarations : Vector!FuncDeclaration { final typeof(this) copy() { auto a = new typeof(this); copyTo(a); return a; } } 3757 alias Vector!FuncDeclaration FuncDeclarations;