Am 03.03.2021 15:38 schrieb Allin Cottrell:
On Wed, 3 Mar 2021, Sven Schreiber wrote:
> Am 03.03.2021 um 13:31 schrieb atecon:
>>
>> with latest git version under Ubuntu 18.04 I obtain a crash when
>> running the following script:
> Confirmed with a recent snapshot on Windows. That one looks pretty
> bad,
> but...
>>
>> function void simple (const int N[2::])
>>
> ...it doesn't crash anymore for me when removing "const". And only
> Artur
> would put a const in front of an int ;-)
>
> Actually, I believe it is not supported by hansl to do "const int":
> The
> guide says "the const modifier may be used... for all the types that
> support the pointer apparatus".
That's right. "const" doesn't have any effect when placed in front of
(non-pointerized) scalar arguments of any sort. Illustration:
<hansl>
function void simple (const int N[2::])
printf "very simple (%d)\n", N
# no error flagged here
N = 24
end function
Ah, I never checked that but simply assumed that the const qualifier
would flag an error inside a function.
function void dimple (const matrix m)
printf "very dimple\n"
# this does give an error
m = m + 5
end function
k = 7
simple(k)
print k # note: k is still 7
dimple(I(3))
</hansl>
I guess this is a buglet: either "const" should be disallowed for
plain scalar arguments, or else it should prevent changing the
argument inside the function (although the caller will not inherit a
change in any case).
Yes, either case I guess. Personally I would favor that const is allowed
for all data types (but there may be good reason why not to do so).
Artur