Fixed a problem with returning void.

Updated quicksort test to be a real working test.


git-svn-id: http://picoc.googlecode.com/svn/trunk@327 21eae674-98b7-11dd-bd71-f92a316d2d60
This commit is contained in:
zik.saleeba 2009-06-03 05:24:41 +00:00
parent b55ab05d48
commit d432ebf74a
3 changed files with 35 additions and 28 deletions

View file

@ -482,9 +482,11 @@ enum ParseResult ParseStatement(struct ParseState *Parser)
ProgramFail(Parser, "value required in return");
if (TopStackFrame->ReturnValue->Typ->Base != TypeVoid)
{
ExpressionAssign(Parser, TopStackFrame->ReturnValue, CValue, TRUE, NULL, 0);
VariableStackPop(Parser, CValue);
}
VariableStackPop(Parser, CValue);
Parser->Mode = RunModeReturn;
}
else

View file

@ -1,22 +1,5 @@
int array[16];
array[0] = 62;
array[1] = 83;
array[2] = 4;
array[3] = 89;
array[4] = 36;
array[5] = 21;
array[6] = 74;
array[7] = 37;
array[8] = 65;
array[9] = 33;
array[10] = 96;
array[11] = 38;
array[12] = 53;
array[13] = 16;
array[14] = 74;
array[15] = 55;
//Swap integer values by array indexes
void swap(int a, int b)
{
@ -59,17 +42,38 @@ void quicksort(int left, int right)
quicksort(index + 1, right);
}
int i;
void main()
{
int i;
for (i = 0; i < 16; i++)
printf("%d ", array[i]);
array[0] = 62;
array[1] = 83;
array[2] = 4;
array[3] = 89;
array[4] = 36;
array[5] = 21;
array[6] = 74;
array[7] = 37;
array[8] = 65;
array[9] = 33;
array[10] = 96;
array[11] = 38;
array[12] = 53;
array[13] = 16;
array[14] = 74;
array[15] = 55;
printf("\n");
for (i = 0; i < 16; i++)
printf("%d ", array[i]);
quicksort(0, 15);
printf("\n");
for (i = 0; i < 16; i++)
printf("%d ", array[i]);
quicksort(0, 15);
printf("\n");
for (i = 0; i < 16; i++)
printf("%d ", array[i]);
printf("\n");
}
main();

View file

@ -22,6 +22,7 @@ TESTS= 00_assignment.test \
22_floating_point.test \
23_type_coercion.test \
24_math_library.test \
25_quicksort.test \
26_character_constants.test
%.test: %.expect %.c