Changeset 1177:a8b9fc41c34b
- Timestamp:
- 03/29/09 17:57:51
(3 years ago)
- Author:
- Frits van Bommel <fvbommel wxs.nl>
- branch:
- default
- Message:
Fix #246 by running type->semantic() on parameters so tuples are expanded.
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r1158 |
r1177 |
|
| 769 | 769 | } |
|---|
| 770 | 770 | } |
|---|
| | 771 | |
|---|
| | 772 | #if IN_LLVM |
|---|
| | 773 | // LDC make sure argument type is semanticed. |
|---|
| | 774 | // Turns TypeTuple!(int, int) into two int parameters, for instance. |
|---|
| | 775 | if (f->parameters) |
|---|
| | 776 | { |
|---|
| | 777 | for (size_t i = 0; i < Argument::dim(f->parameters); i++) |
|---|
| | 778 | { Argument *arg = (Argument *)Argument::getNth(f->parameters, i); |
|---|
| | 779 | Type* nw = arg->type->semantic(0, sc); |
|---|
| | 780 | if (arg->type != nw) { |
|---|
| | 781 | arg->type = nw; |
|---|
| | 782 | // Examine this index again. |
|---|
| | 783 | // This is important if it turned into a tuple. |
|---|
| | 784 | // In particular, the empty tuple should be handled or the |
|---|
| | 785 | // next parameter will be skipped. |
|---|
| | 786 | // FIXME: Maybe we only need to do this for tuples, |
|---|
| | 787 | // and can add tuple.length after decrement? |
|---|
| | 788 | i--; |
|---|
| | 789 | } |
|---|
| | 790 | } |
|---|
| | 791 | // update nparams to include expanded tuples |
|---|
| | 792 | nparams = Argument::dim(f->parameters); |
|---|
| | 793 | } |
|---|
| | 794 | #endif |
|---|
| 771 | 795 | |
|---|
| 772 | 796 | // Propagate storage class from tuple parameters to their element-parameters. |
|---|