Branch: Tag:

2023-03-03

2023-03-03 12:36:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Add format attribute to yywarning() and my_yyerror().

2023-02-27

2023-02-27 10:18:31 by Marcus Comstedt <marcus@mc.pp.se>

Compiler [Typechecker]: Fix leaking marker assignments with T_OR

2023-02-25

2023-02-25 23:59:04 by Marcus Comstedt <marcus@mc.pp.se>

Compiler [Typechecker]: Fix disappearing attribute on A with A-(B|C)

2023-02-21

2023-02-21 07:21:34 by Marcus Comstedt <marcus@mc.pp.se>

low_type_to_string: Add u8 rather than char to buffer

This fixes a warning when char is signed.

2023-02-20

2023-02-20 21:24:02 by Marcus Comstedt <marcus@mc.pp.se>

Build: Fix warnings about unused arguments and functions.

2023-02-19

2023-02-19 16:50:32 by Marcus Comstedt <marcus@mc.pp.se>

low_describe_{type,_int_range}: Fix format strings

2023-02-19 12:36:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix formatting of some type mismatch errors.

yytype_report()'s format string is used both with the Pike-level
sprintf() and with string_builder_vsprintf(). Adjust some formats
accordingly.

Fixes testsuite failure.

2023-02-18

2023-02-18 18:37:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Build: Use p-prefix for Pike sprintf-extensions to sprintf().

Fixes lots of warnings from gcc.

2023-02-18 09:39:25 by Tobias S. Josefowitz <tobij@tobij.de>

Compiler [Typechecker]: Fix missing adjustment to remapper API change

In push_and_fixup_markers().

2022-12-08

2022-12-08 09:21:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix NULL-deref on __unknown__.

Fixes testsuite failure.

2022-11-26

2022-11-26 12:58:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Reduce code-duplication.

Move cyclic type detection code from simple_describe_type()
to low_describe_type().

Remove the simple_describe_type() implementation of rendering types.
simple_describe_type() now just calls safe_pike_fprintf(stderr, "%T")
with its argument (which in turn calls low_describe_type()).

Fix issue where the NULL type was sometimes rendered as `mixed`
rather than the expected `__unknown__`.

2022-11-20

2022-11-20 12:43:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Work in progress: Sakura master

2022-11-07

2022-11-07 07:32:40 by Martin Nilsson <nilsson@fastmail.com>

foo|void... is foo...

2022-11-02

2022-11-02 09:10:22 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Evaluate markers in marker value assignments.

2022-11-01

2022-11-01 10:22:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add missing special case.

2022-10-31

2022-10-31 10:27:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved matching of transitive functions.

2022-10-30

2022-10-30 08:22:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Pass along remap to expand_transitive_remap().

Fixes some marker expansion issues.

2022-10-29

2022-10-29 08:00:12 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed marker issues in expand_transitive_remap().

No remapping should be done on cont when propagating it "in front of"
the transitive type.

The return value from cont must have its markers expanded before
using it as argument to trans.

These changes should make the remap argument to expand_transitive_remap()
actually useful (all current users pass a NULL remap).

2022-10-28

2022-10-28 08:32:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Move TRANSITIVE special cases to push_type().

PIKE_T_TRANSITIVE types will now have neither a car nor a cdr of NULL.

Reduces need for special cases in other code.

2022-10-27

2022-10-27 08:38:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add exception to inexact mode.

2022-10-26

2022-10-26 15:39:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved MINUS of scoped types.

Fixes argument matching when the value has a scoped type.

Fixes map(a, lower_case) some more.

2022-10-26 11:34:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved support for markers in function types.

Improved handling of eg

array(string) a = ({});
typeof(map(a, lower_case));

Giving the comparison

scope(0, function(int:int)|function(string:string)) -
function(string, @($1 = function(__unknown__...:mixed)))

where previously the marker $1 was not set properly.

2022-10-26 10:45:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add PT_FLAG_REMAP_NO_STORE_MARKERS.

This flag inhibits altering the values for the marker set.

2022-10-24

2022-10-24 09:14:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Adjust evaluation order in type_binop().

Fixes erroneous warning for

__deprecated__(int(..-1)) - void|int(31bit)|__deprecated__(int(..-1))

Triggered when comparing typeof(__builtin.Nettle.Hash()->hash) with
typeof(Nettle.Hash()->hash).

Fixes testsuite failure.

2022-10-19

2022-10-19 08:53:57 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Reduce recursion in lower_new_check_call().

2022-10-19 08:48:34 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Changed a few errors into fatals.

Some of these could be triggered via the compiler, which does not
like errors being thrown.

2022-10-18

2022-10-18 15:28:54 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved AND of scoped types.

Fixes testsuite failure.

2022-10-17

2022-10-17 13:33:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix infinite recursion.

Comparing two transitive types could cause infinite recursion.

Fixes #10097.

2022-10-15

2022-10-15 10:16:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of eg string - string(17:7bit).

2022-10-14

2022-10-14 08:30:16 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved performance for binop on scope types.

Alleviates some of the issues in #10096.

2022-09-29

2022-09-29 10:51:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Allow indexing of type(object) with strings.

2022-09-29 09:25:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added PIKE_T_THRESHOLD.

This is a threshold function that coerces its argument to
mixed|void if the argument is not __unknown__. It can be
used to convert other type operators from set-operations
to boolean operations.

2022-09-28

2022-09-28 08:56:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Survive mixed|void in pop_type_stack().

2022-09-27

2022-09-27 12:22:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix common consequential error.

Triggering a compilation error caused return statements for
later functions declared as returning void in the same program
to fail with:

Must return a value for a non-void function.
Expected: mixed.
Got : void.

2022-09-27 10:09:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Inhibit erroneous warning.

Inhibits erroneous warning in strict_types mode when eg calling
predef::object_program() with a mixed value.

Fixes multiple testsuite failures.

2022-09-27 08:49:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support object_program(obj)() again.

Fixes multiple testsuite failures.

2022-09-26

2022-09-26 11:32:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix issue comparing function types.

Promote void to zero when comparing return types.
The following code is thus now allowed without complaint:

void foo(string, int|void);
function(string:int(0..)) f = foo;

Fixes compilation error in Tool.Hilfe.

2022-09-26 09:38:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved robustness in simple_describe_type().

2022-09-24

2022-09-24 09:56:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Allow indexing of types with strings.

2022-09-23

2022-09-23 10:54:16 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix T_OBJECT - T_PROGRAM.

2022-09-21

2022-09-21 09:59:05 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Use low_discard_type() where appropriate.

2022-09-21 09:52:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Merge branch 'patches/bug10054'

* patches/bug10054:
Compiler [Typechecker]: compiler_discard_type() now leaves a marker.

2022-09-15

2022-09-15 14:18:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix or of string types.

Fixes type for or with string(zero).

Fixes testsuite failure.

2022-09-15 10:35:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix NULL-deref.

2022-09-15 08:41:17 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add PIKE_T_INT_OP_{MIN,MAX}.

NB: Also renumbers PIKE_T_INT_OP_MUL.

2022-08-28

2022-08-28 10:46:31 by Tobias S. Josefowitz <tobij@tobij.de>

Compiler [Typechecker]: Fix NULL-deref.

2022-08-02

2022-08-02 15:59:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add bool_type_string.

2022-07-24

2022-07-24 08:22:37 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Revert "ADT.Interval.Boundary: Add prototype for lfun::`~()."

Some extra juck got in.

This reverts commit 46d303594c1ddf3382e909c4d44cd112a3502735.

2022-07-24 08:21:54 by Henrik Grubbström (Grubba) <grubba@grubba.org>

ADT.Interval.Boundary: Add prototype for lfun::`~().

Fixes compilation errors.

2022-07-20

2022-07-20 14:26:16 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added PIKE_T_INT_OP_MUL.

2022-07-15

2022-07-15 13:18:25 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved type for bignum objects in _typeof().

Bignum objects now get the type scope(0, object(bignum)|int).
This helps in avoiding issues when the bignums aren't inspected
deeply. This fixes eg

return ([ "a": 0xffffffff00000000ffffffff ]);

Which previously caused a compilation error due to the compiler
derived type (mapping(string(1:97): int)) not matching the type
from _typeof() on the constant value (mapping(string: object)).

The compiler now instead derives the type

mapping(string(1:97): scope(0, int|object(is bignum)))

which is compatible with the result from _typeof().

Fixes testsuite failures on 32-bit platforms.

2022-07-15 08:54:05 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Retain remap state when A - (B|C).

Fixes lost state mapping for push_type_attribute().

2022-07-14

2022-07-14 12:16:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added state mapping to struct remap_state.

2022-07-14 11:37:12 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Adjusted API for handling attributes.

2022-07-12

2022-07-12 16:40:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Use fun_name from call_state.

2022-07-12 15:07:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add function name field to call_state.

2022-07-12 14:10:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added unknown_function_string.

2022-07-11

2022-07-11 14:15:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added PT_FLAG_CMP_FUN_ARG.

This flag is intended to be used when handling attributes
on types that expand to sequences, do that the handler can
differentiate between matches like

array(__attribute__("foo", mixed))

and

function(__attribute__("foo", mixed)...: mixed)

in the latter case PT_FLAG_CMP_FUN_ARG will be set, so that
the handler can expand the attribute one argument at a time,
and in the former case it will not be set, so that the types
can be joined into a single type.

2022-07-09

2022-07-09 09:41:11 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Send call_state to new_get_return_type().

2022-07-05

2022-07-05 13:25:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix broken check for T_MANY.

avoidable and bvoidable now contain other flags than just
PT_FLAG_CMP_VOIDABLE, so check just for the needed flag.

2022-07-05 12:33:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved checking of variant overloading.

The variant overload check now attempts to match the variant
dispatcher better.

2022-07-05 10:39:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix typo.

2022-07-05 08:33:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Some adjustments of indexing of empty containers.

Indexing the empty array now gives an error again.

Indexing the empty mapping is now allowed again.

2022-07-04

2022-07-04 11:37:32 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added operator PIKE_T_APPLY.

2022-07-01

2022-07-01 09:20:11 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix detection of too many args to sscanf().

2022-06-30

2022-06-30 10:36:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix detection of empty strings.

Update index_type() to know the difference between string(zero)
and string(zero: __unknown__). Only the latter is an empty string.

2022-06-30 09:08:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add PIKE_T_INT_OP_RANGE.

2022-06-27

2022-06-27 12:39:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support casting to attributed types.

Also: Avoid complaining about assigning deprecated values
to deprecated variables.

2022-06-27 11:18:51 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Some more __deprecated__ fixes.

2022-06-27 09:36:14 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: __deprecated__ should now work again.

2022-06-25

2022-06-25 07:06:40 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix get_type_of_svalue() for containers containing functions.

2022-06-21

2022-06-21 12:49:12 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: More low-level operations for T_AND.

2022-06-21 09:05:37 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Perform some basic operations in low-level code.

2022-06-21 09:03:01 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Drop type attributes after modifying their contents.

2022-06-20

2022-06-20 08:59:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix C-stack overflow.

2022-06-17

2022-06-17 12:58:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Adjusted type for enums.

2022-06-17 08:55:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added PIKE_T_INT_OP_{AND,XOR}.

Thanks to Marcus Comstedt for the low-level code.

2022-06-15

2022-06-15 10:26:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add special case.

Special case for function(__unknown__...:mixed|void).

Fixes testsuite failure.

2022-06-14

2022-06-14 16:50:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Even more sscanf_80_type_string fixes.

2022-06-14 16:45:59 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Add missing definition.

2022-06-14 10:32:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

EFUNs: Use the sscanf_input attribute in sscanf() and array_sscanf().

Fixes quite a few warnings.

2022-06-13

2022-06-13 16:48:14 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Call apply_attribute_constant() also when no constant.

Also adjusts the third argument to apply_attribute_constant() to be
the subset of the argument type that matched the declared type.

Fixes handling of the sscanf_input attribute.

2022-06-13 15:29:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix expected type for sscanf lvalues.

2022-06-13 13:23:17 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support strict checking of sscanf().

2022-06-11

2022-06-11 09:12:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Code cleanup.

Also fixes a compilation error.

2022-06-11 09:08:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Changed API for apply_type_attribute() et al.

They now get a mapping that they may use to keep state between arguments.

2022-06-10

2022-06-10 18:29:54 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add struct call_state.

This struct is intended to contain state that is to be propagated
between arguments during typechecking of function calls.

2022-06-09

2022-06-09 16:14:32 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Avoid combinatorial explosion.

2022-06-03

2022-06-03 19:28:45 by Marcus Comstedt <marcus@mc.pp.se>

Compiler [Typechecker]: Fix warning

2022-06-02

2022-06-02 10:55:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: void is converted to zero when in container type.

Fixes multiple warnings.

2022-06-02 09:10:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: No more implicit nullable for function args.

Fixes multiple warnings from eg check_variant_overload().

2022-06-01

2022-06-01 08:28:58 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed bug in handling of PT_FLAG_CMP_IGNORE_EXTRA_ARGS.

2022-05-31

2022-05-31 10:41:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of mixed when CMP_NULLABLE.

2022-05-28

2022-05-28 09:16:34 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix checking of functions returning void.

2022-05-20

2022-05-20 09:53:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved checking of calls of inverted functions.

Calling eg ~function(~int...:mixed) (ie "exists int") with mixed now
results in the same as calling it with int.

Fixes several testsuite failures in eg the Calendar module.

2022-05-16

2022-05-16 14:48:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add special case for T_TRANSITIVE - T_MANY.

Special case for subtracting function(:X) from a transitive type.

2022-05-16 14:25:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix typo.

2022-05-16 13:40:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of T_TRANSITIVE - T_MANY.

2022-05-13

2022-05-13 09:36:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved detection of strict mismatches.

Fixes erroneous result type from eg map("foobar"/2, reverse).

2022-05-12

2022-05-12 13:46:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix erroneous strict types warning.

Calling a function that expects a function argument with a function
of type scope(function(A...:X)|function(B...:Y)) is OK if either of
function(A...:X) or function(B...:Y) is OK.

2022-05-11

2022-05-11 12:29:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Do not accept more arguments than declared.

2022-05-10

2022-05-10 08:26:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix some special cases with T_VOID in type_binop().

Also adds some previously missing handling of markers.

2022-05-08

2022-05-08 21:43:11 by Tobias S. Josefowitz <tobij@tobij.de>

Compiler [Typechecker]: Fixed reference handling in store_marker()

In cases where the value passed to store_marker() was NULL but the
marker was present in the mapping, we used to overwrite the marker with
itself. By doing so, assign_svalue() (as used by low_mapping_insert())
would free the same value we were inserting. This is never great but has
especially noticeable consequences when the value only had a single
reference.

Instead, we now simply do not re-insert the value in these cases.

2022-05-07

2022-05-07 19:59:14 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support an alternate set of remappings.

Also makes simple_describe_remap_state() available without PIKE_DEBUG.

2022-05-07 18:59:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support multiple store in store_marker().

2022-05-07 18:26:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added helper simple_describe_remap_state().

2022-05-07 18:09:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: More tracing.

2022-05-07 17:16:01 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: More tracing.

2022-05-07 16:55:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed another NULL-deref.

2022-05-07 16:53:01 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix some NULL-derefs.

2022-05-07 16:36:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Enable the cyclic check.

2022-05-07 16:33:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Trace binops at debug level 3+.

2022-05-07 16:18:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Survive cyclical types.

2022-05-07 14:42:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix NULL-deref.

2022-05-07 14:23:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Ignore the return value for functions returning void.

2022-05-07 13:45:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix subtraction of void.

2022-05-07 12:30:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Only output type flags at high debug levels.

2022-05-07 10:24:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix soft casting to program.

2022-05-07 09:45:34 by Marcus Comstedt <marcus@mc.pp.se>

Compiler: Avoid recursing in push_remap_markers after looking up markers

2022-05-06

2022-05-06 08:40:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Upgrade __unknown__ return value to mixed.

Fixes erroneous errors when calling the generic function type
(ie function(mixed...:__unknown__)).

2022-05-05

2022-05-05 11:13:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Type-checker]: Break some cases of infinite recursion.

2022-05-04

2022-05-04 10:40:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Use the marker remapper in lower_new_check_call().

2022-05-03

2022-05-03 12:24:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of markers for PIKE_T_TRANSITIVE.

2022-05-02

2022-05-02 08:13:16 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Removed inline for debug_mk_type().

2022-04-29

2022-04-29 13:08:59 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Improved robustness for describe_type() et al.

2022-04-28

2022-04-28 13:15:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: '~' now represents the T_NOT operator when rendering types.

2022-04-19

2022-04-19 09:05:58 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Documentation: Improved doc of check_variant_overload().

2022-04-16

2022-04-16 10:36:37 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix check_variant_overload().

2022-04-14

2022-04-14 14:38:01 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix checking of overloading of variants.

2022-04-13

2022-04-13 09:44:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added some special cases.

Special cases for matching against function(__unknown__...:mixed).

2022-04-12

2022-04-12 10:59:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Remove some dead code.

Removes low_and_pike_types() et al as they are no longer used.

Fixes compile-time warning about unused static function.

2022-04-12 09:26:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Use type_binop() to implement and_pike_types().

2022-04-11

2022-04-11 14:47:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Fix leak of type stack marks when dispatching variants.

Some obscure variant functions caused the variant dispatcher to
leak marks on the type stack.

2022-04-11 08:18:37 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add and use {push_,}expand_transitive_remap().

Fixes some NULL-dereferences on NULL markers.

2022-04-10

2022-04-10 12:04:48 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved BINOP_MINUS for functions.

2022-04-09

2022-04-09 09:01:45 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix infinite loop.

2022-04-08

2022-04-08 14:10:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Some remapper API changes.

The remap_state now contains one mapping for each of the binop
parameters. This is to make it simple to save and restore the
state for the binop parameters separately.

lookup_marker() now supports markers set to __unknown__.

2022-04-07

2022-04-07 08:48:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of markers and PT_BINOP_MINUS.

2022-04-06

2022-04-06 14:41:40 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added PT_FLAG_REMAP_KEEP_MARKERS.

2022-04-05

2022-04-05 14:32:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of __unknown__.

multiset(__unknown__) & multiset(mixed) ==> multiset(__unknown)
multiset(__unknown__) - multiset(mixed) ==> __unknown__

2022-04-04

2022-04-04 12:44:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix typo.

2022-04-03

2022-04-03 10:16:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support PIKE_T_OPERATOR in transitive types.

2022-04-02

2022-04-02 11:18:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added short-hand for PIKE_T_TRANSITIVE.

transitive(__unknown__, A) is now equivalent to transitive(A, A).

2022-04-01

2022-04-01 16:40:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improve handling of PIKE_T_TRANSITIVE some more.

2022-04-01 10:36:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of PIKE_T_TRANSITIVE.

Reduces recursion on TRANSITIVE PT_BINOP_AND MANY.

2022-03-31

2022-03-31 10:04:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix lots of erroneous warnings.

2022-03-30

2022-03-30 15:02:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix another typo.

2022-03-30 15:00:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix typo.

2022-03-30 14:04:32 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix multiple NULL-dereferences.

2022-03-29

2022-03-29 14:32:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of PIKE_T_OPERATOR.

2022-03-28

2022-03-28 12:53:04 by Martin Nilsson <nilsson@fastmail.com>

Comment out currently unused push_reverse_binop

2022-03-28 09:40:40 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of mixed in int_op's.

2022-03-27

2022-03-27 11:29:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix lost array nesting.

The array nesting was lost when calling transitive functions
nested in arrays.

2022-03-26

2022-03-26 12:19:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix marker loss in new_check_call().

2022-03-25

2022-03-25 15:01:16 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Remove some dead code.

2022-03-24

2022-03-24 10:24:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix compile-time type for negative constants.

2022-03-24 09:27:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support marker expansion in cdr of PIKE_T_OPERATOR.

2022-03-23

2022-03-23 18:13:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Remove some broken DWIM in push_type_operator().

Fixes issues with PIKE_T_OPERATOR and PIKE_T_UNKNOWN.

2022-03-23 15:54:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: More type operator fixes.

2022-03-23 11:13:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add PIKE_T_INT_OP_SUB.

This is a type operator that returns the type for the result
of subtracting two integer ranges.

2022-03-20

2022-03-20 12:44:57 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Consider declared array range in check_splice_call().

This makes it possible to avoid warnings about array max length
restrictions when using the @-operator when using strict types.

2022-03-20 12:18:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix handling of mixed in get_int_type_range().

Also adds some related doc.

2022-03-17

2022-03-17 09:02:17 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix result from match_types() and T_NOT.

2022-03-16

2022-03-16 16:12:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Revert "Compiler [Typechecker]: Promote type operator failure to void."

This commit broke the type checking of foreach() in Getopt.

This reverts commit 4ebedfbedd5113292b43577f1bad339bbbae1f28.

2022-03-16 15:15:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Promote type operator failure to void.

Fixes some obscure failures.

2022-03-16 14:23:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved low_get_return_type().

2022-03-16 12:13:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Implement old check_call() API using new API.

low_get_return_type() is now implemented with low_new_check_call()
and new_get_return_type(). This should make the type checker more
consistent.

Also adds some documentation.

2022-03-14

2022-03-14 18:10:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix yet another NULL-deref.

2022-03-14 16:48:17 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix some more NULL-derefs.

2022-03-14 11:28:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved behavior for {index,key}_type().

They no longer upgrade __unknown__ results to mixed.

key_type() now handles __unknown__, T_AND and T_NOT properly.

key_type() now returns the declared index type for T_ARRAY
and T_STRING.

Added some documentation.

2022-03-13

2022-03-13 11:55:29 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Changed type for F_PUSH_ARRAY nodes.

This is in preparation of having check_splice_call() account
for any array length restrictions.

2022-03-08

2022-03-08 10:28:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Do not generate the type zero = zero.

2022-03-07

2022-03-07 15:18:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix NULL-deref.

2022-03-06

2022-03-06 15:35:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix NULL-dereference.

2022-03-05

2022-03-05 10:58:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Relax argument checking for zero.

Improves type derivation for function calls where the arguments
have types like string|zero or object|zero.

2022-03-03

2022-03-03 10:52:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Clean up describing of some types.

2022-03-01

2022-03-01 14:23:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix matching against mixed.

2022-02-23

2022-02-23 12:29:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added PT_FLAG_{NULLABLE,MIXED}.

2022-02-23 11:36:22 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix PT_FLAG_MIXED with T_NOT nodes.

2022-02-22

2022-02-22 10:46:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of common case in <=.

2022-02-21

2022-02-21 14:24:14 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix calling of negated types.

Calling of not(zero) now returns mixed.

2022-02-20

2022-02-20 11:17:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix indexing of strings and arrays with mixed.

2022-02-19

2022-02-19 12:51:55 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: mixed is a superset of all types except void.

Types like array(int|mixed) should now become array(mixed).

Also removes promotion of __unknown__ to void in an obscure case.

2022-02-18

2022-02-18 12:58:55 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Clean up handling of PT_FLAG_VOIDABLE.

2022-02-17

2022-02-17 09:08:34 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix PT_FLAG_VOIDABLE for T_NOT nodes.

2022-02-16

2022-02-16 15:21:34 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add type flag PT_FLAG_VOIDABLE.

2022-01-23

2022-01-23 13:58:25 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Stricter check of array contents in soft casts.

2022-01-08

2022-01-08 13:15:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix A - (B|C) in INEXACT mode.

2022-01-07

2022-01-07 10:42:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix typo in type_binop().

2022-01-06

2022-01-06 11:26:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of NOT in type_binop().

Fixes the case

mixed - (mixed|zero) aka (!zero) - mixed

which used to result in

!(mixed|zero)

rather than the expected

__unknown__

Fixes several warnings.

2022-01-02

2022-01-02 10:58:57 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of markers in type_binop().

2022-01-01

2022-01-01 09:54:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix mapping leak in type_binop().

2021-12-31

2021-12-31 10:29:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix indexing of arrays with strings.

Due to the string length being part of the string type, the
old method started failing for strings with known lengths.

Fixes multiple warnings.

2021-12-30

2021-12-30 09:31:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add PT_FLAG_REMAP_INEXACT.

This flag causes type_binop() to cheat a bit, and is useful if
its result is only going to be used to compare against NULL.
This speeds up pike_types_le() quite a bit for some cases.

2021-12-28

2021-12-28 14:24:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added PT_FLAG_CMP_IGNORE_EXTRA_ARGS.

This is a flag for type_binop() that does the reverse of what
LE_STRICT_FUN does for low_pike_types_le().

2021-12-27

2021-12-27 09:54:40 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Disable INSEPARABLE special case in type_binop().

2021-12-25

2021-12-25 11:57:37 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Make pop_type_stack() array index type aware.

2021-12-24

2021-12-24 13:33:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved support for markers in type_binop().

2021-12-23

2021-12-23 10:32:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Back-patch marker assignments in type_binop().

2021-12-22

2021-12-22 13:43:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Updated internal doc.

2021-12-21

2021-12-21 10:28:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support __unknown__ in {lookup,store}_marker().

Also: lookup_marker() now adds a reference to the returned type.

2021-12-20

2021-12-20 15:33:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: More marker propagation handling for T_OR.

2021-12-19

2021-12-19 13:25:12 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Handle marker propagation for T_OR.

2021-12-18

2021-12-18 13:59:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Minor code clean up.

Reduce number of special cases somewhat.

2021-12-17

2021-12-17 10:54:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Move markers mapping to remap_state.

Cleans up the API somewhat, and enables allocating the mapping on demand.

2021-12-16

2021-12-16 10:39:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of markers in type_binop().

Also removes some debug.

2021-12-14

2021-12-14 13:21:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support nested T_OR in get_int_type_range().

2021-12-12

2021-12-12 14:42:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added some FIXMEs regarding range_type().

2021-12-07

2021-12-07 10:27:51 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of PT_BINOP_MINUS.

2021-12-06

2021-12-06 13:39:51 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: new_get_return_type(__unknown__, X) == __unknown__.

Fixes issues eg with type checking of foreach().

2021-12-05

2021-12-05 08:18:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Remove the mixed fallback from apply_type_operator().

Upgrading types from __unknown__ to mixed was not a good idea.

Fixes several warnings.

2021-12-03

2021-12-03 09:44:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: More find_lfun_type() fixes.

2021-12-02

2021-12-02 09:56:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix some issues with find_lfun_type().

find_lfun_type() now returns NULL for object types known not
to have the lfun.

Fixes a string leak.

2021-12-01

2021-12-01 15:02:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Disable excessive type warning.

2021-11-28

2021-11-28 11:39:12 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support nested type operators.

2021-11-27

2021-11-27 12:00:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add type operator get_return.

2021-11-23

2021-11-23 14:37:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Filter type markers with their match pattern.

Fixes type markers containing non-matching types.

2021-11-21

2021-11-21 14:52:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix some issues with __unknown__.

2021-11-21 14:19:37 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of index type for arrays.

2021-11-20

2021-11-20 13:55:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved type for empty array.

2021-11-19

2021-11-19 11:49:45 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix type stack underflow.

2021-11-17

2021-11-17 14:09:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of nullable types.

2021-11-14

2021-11-14 14:10:05 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added flag PT_FLAG_REMAP_INHIBIT.

2021-11-13

2021-11-13 13:02:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Remove stupid_describe_type_string().

This was a remnant of the really old type checker, and has not been
used for at least 10 years.

2021-11-11

2021-11-11 10:06:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Render markers with the prefix '$'.

This reduces ambiguity when markers and integers are mixed.

2021-11-10

2021-11-10 00:44:24 by Tobias S. Josefowitz <tobij@tobij.de>

Compiler [Typechecker]: Empty string has unknown range

The empty string now has no/unknown range and is a typewise valid match
for all possible string ranges.

2021-11-07

2021-11-07 12:33:11 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Markers now default to __unknown__.

2021-11-06

2021-11-06 18:08:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of __unknown__.

2021-11-06 17:56:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix handling of __unknown__ in string types.

2021-11-06 16:47:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Do not keep the type name when its value changes.

2021-09-27

2021-09-27 14:44:40 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved diagnostics --with-dmalloc.

2021-09-26

2021-09-26 12:38:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix type leak in type_binop().

2021-09-25

2021-09-25 13:05:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix type leak in find_lfun_type().

2021-09-16

2021-09-16 12:24:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Debug: Fix some rendering issues in simple_describe_type().

2021-09-15

2021-09-15 16:09:55 by Marcus Comstedt <marcus@mc.pp.se>

Compiler [Typechecker]: Workaround for gcc optimization of signed overflow

The expression "(min1 > max2) && (min1 > max2 + 1)" got optimized into
"(min1 > max2 + 1)" by gcc, because of min1 is larger than max2 + 1,
then it clearly must be larger than max2 as well... Except when max2 + 1
is a signed overflow. So explicitly check for that instead and hope gcc
doesn't optimize away that check as well...

2021-07-14

2021-07-14 10:22:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix erroneous deprecation warning in obscure case.

Fixes [REP-60].

2021-07-11

2021-07-11 13:33:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed ref-count errors with PIKE_T_OPERATOR.

2021-07-10

2021-07-10 14:32:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Detect circularities in simple_describe_type().

2021-07-04

2021-07-04 15:56:57 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added type operators set_car and set_cdr.

Also improves robustness regarding NULL in types.

2021-06-28

2021-06-28 12:58:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix NULL-deref.

Thanks to Chris Angelico <rosuav@gmail.com> for the
report and test case.

Fixes [LysLysKOM 24784470].

2021-06-10

2021-06-10 15:24:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fix typo.

2021-06-10 13:13:12 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Support nullable types in compile_type_to_runtime_type().

2021-06-09

2021-06-09 12:00:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of __unknown__ in `|().

2021-06-04

2021-06-04 16:12:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix another issue with __unknown__.

2021-06-03

2021-06-03 15:28:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support __unknown__ in more places.

2021-05-21

2021-05-21 09:18:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Do not lose track of markers.

2021-05-20

2021-05-20 10:06:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix some issues with binop's on __unknown__.

Fixes some erroneous warnings.

2021-05-11

2021-05-11 09:05:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Move some diagnoistics to PIKE_EXTRA_DEBUG.

2021-05-10

2021-05-10 18:22:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: More use of PIKE_T_UNKNOWN.

2021-05-10 12:12:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved robustness of lower_new_check_call().

2021-05-07

2021-05-07 14:27:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improve robustness against NULL in free_type().

2021-05-03

2021-05-03 15:19:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Third go at subtraction of function types.

2021-04-14

2021-04-14 08:31:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix some NULL-derefs in low_index_type().

2021-04-13

2021-04-13 10:29:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix NULL-deref in push_unlimited_array_type().

2021-04-11

2021-04-11 16:29:29 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: More __unknown__ fixes.

2021-04-10

2021-04-10 13:23:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed PT_FLAG_CMP_VOID_IS_ZERO.

2021-04-09

2021-04-09 17:37:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix NULL-deref in even_lower_and_pike_types().

2021-04-09 17:31:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved binop(PT_BINOP_{OR|MINUS}, ...)

Add special case to simplify the result for A - (B|C) and A | (B|C).

Previously
int - (int(1)|int(5))
resulted in
(int(..0)|int(2..)) & (int(..4)|int(6..))
now it instead results in
int(..0)|int(2..4)|int(6..)
which is what most users expect.

2021-04-09 08:23:57 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix another NULL-deref in low_index_type().

2021-04-07

2021-04-07 07:04:35 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix NULL-deref in low_index_type().

2021-04-06

2021-04-06 07:04:29 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed some more NULL-derefs when rendering types.

2021-04-05

2021-04-05 11:33:35 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix NULL-deref in describe_type().

2021-04-04

2021-04-04 12:43:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: More use of __unknown__ in typeof().

2021-04-03

2021-04-03 12:25:59 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix some NULL-derefs when rendering types.

2021-04-01

2021-04-01 15:08:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Handle return of __unknown__ in match_types().

2021-04-01 07:24:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix NULL-deref in new_get_return_type().

2021-03-31

2021-03-31 11:38:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed NULL-deref in push_type_operator().

2021-03-30

2021-03-30 09:29:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added some special cases to push_type().

Handle __unknown__ in combination with AND, OR and NOT directly.

2021-03-27

2021-03-27 16:22:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Use __unknown__ instead of zero in some cases.

2021-03-22

2021-03-22 14:12:22 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added flags to pike_types_le().

2021-03-21

2021-03-21 15:13:14 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added PT_FLAG_CMP_VOID_IS_ZERO.

2021-03-19

2021-03-19 16:16:16 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added PT_FLAG_CMP_INSEPARABLE.

2021-03-18

2021-03-18 16:39:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added some internal doc.

2021-03-15

2021-03-15 19:34:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: More NULL-deref fixes.

2021-03-14

2021-03-14 16:36:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix some GC NULL-derefs.

2021-03-13

2021-03-13 11:28:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of NULL in pike_types_le().

2021-03-12

2021-03-12 09:51:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Minor DMALLOC clean-up.

2021-03-11

2021-03-11 18:09:57 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix indexing of __unknown__.

2021-03-10

2021-03-10 10:22:51 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix memory leak.

2021-03-09

2021-03-09 11:20:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime [DEBUG]: Improved robustness.

2021-03-09 11:19:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: One more place for __unknown__.

2021-03-09 11:10:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Fix rendering of __unknown__.

2021-03-06

2021-03-06 13:32:14 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Build: Fix some warnings.

2021-03-05

2021-03-05 16:28:17 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved --with-dmalloc handling.

2021-02-25

2021-02-25 15:51:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Survive NULL in push_finished_type_with_markers().

2021-02-20

2021-02-20 14:16:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of NULL in or_pike_types().

2021-02-17

2021-02-17 12:19:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix result type for indexing of mappings.

Indexing of mappings may always return zero (or rather UNDEFINED).

Fixes compilation error from the optimizer when it optimizes a
mapping lookup to UNDEFINED, but zero is not in the value type.

2021-02-16

2021-02-16 10:13:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix soft casting of void.

Soft casting of eg string|void to string now gives the
expected string (rather than string|zero).

Fixes multiple strict types warnings.

2021-02-15

2021-02-15 12:21:34 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix handling of nullable-void with mixed.

2021-02-14

2021-02-14 15:05:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Fix rendering issue of array types.

2021-02-11

2021-02-11 12:18:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker] [GC]: Fix NULL-deref.

2021-02-10

2021-02-10 15:54:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved robustness against NULL.

2021-02-05

2021-02-05 10:56:14 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix handling of NULL in debug_free_type().

debug_free_type() attempted to dereference NULL when it looped
on certain types.

2021-02-04

2021-02-04 11:37:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix zero - void and void - zero.

2021-02-04 11:09:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Use type_binop(PT_BINOP_MINUS) for pike_types_le().

2021-02-02

2021-02-02 11:56:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: push_binop(PT_BINOP_NONE) is now supported.

2021-02-01

2021-02-01 14:08:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix typo.

2021-01-30

2021-01-30 13:40:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: More robustness against NULL types.

2021-01-27

2021-01-27 18:33:05 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support NULL as argument type in T_MANY.

2021-01-26

2021-01-26 12:37:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support push_type(PIKE_T_UNKNOWN).

This pushes a NULL on the type stack, and is intended to represent
the empty type.

2021-01-25

2021-01-25 21:43:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Build: Fix compilation warning.

2021-01-22

2021-01-22 16:50:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed typo.

2021-01-22 16:44:57 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix binops where one or both operands is NULL.

2021-01-20

2021-01-20 15:59:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Restructure binary operations of function types.

Also fixes the result of PT_BINOP_AND on function types.

2021-01-18

2021-01-18 15:00:17 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of comparing void and zero.

Fixed some handling of T_MANY(T_VOID, ...) in combination
with T_MANY(T_ZERO, ...).

2021-01-17

2021-01-17 14:16:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix comparison of void with mixed.

2021-01-14

2021-01-14 18:48:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Use type_binop() in soft_cast().

2021-01-13

2021-01-13 17:02:58 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added type_binop().

2021-01-10

2021-01-10 16:25:05 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Some tuning of handling of zero and mixed.

2021-01-08

2021-01-08 15:00:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Unify binops for T_AND and T_OR.

Also fixes typo in lookup table.

2021-01-05

2021-01-05 12:58:32 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of OR in low_type_binop().

2021-01-04

2021-01-04 17:36:22 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improve tracing of low_type_binop().

2021-01-03

2021-01-03 14:21:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed more issues with subtraction of functions.

Function type subtraction now seems to be compatible with pike_types_le().

2021-01-02

2021-01-02 12:57:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Remove extraneous pop_stack_mark().

2021-01-01

2021-01-01 14:39:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support PT_BINOP_XOR and PT_BINOP_XNOR.

2020-12-31

2020-12-31 13:33:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Remove use of duplicate type stack marks.

Use peek_stack_mark() instead of an extra type_stack_mark()
followed by pop_stack_mark(). Reduces type mark stack use
and code size slightly.

2020-12-30

2020-12-30 17:36:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Even more fixes for PT_BINOP_MINUS and functions.

2020-12-28

2020-12-28 17:21:01 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of PT_BINOP_MINUS & functions.

2020-12-27

2020-12-27 15:09:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added some comments.

2020-12-26

2020-12-26 12:26:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Use the NULLABLE flag in a few common cases.

2020-12-25

2020-12-25 13:38:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Build: Fix compilation warning.

2020-12-24

2020-12-24 12:11:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added PT_FLAG_REMAP_NULLABLE.

This flag is analogous to void and PF_FLAG_REMAP_VOIDABLE, but
for zero.

2020-12-23

2020-12-23 16:34:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Remove some obsolete code.

Missed this hunk in the previous commit.

2020-12-23 15:10:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix handling of T_ZERO in low_type_binop().

Eg zero - int(1bit) now returns Ø (empty set) as intended (and not zero).

2020-12-20

2020-12-20 14:16:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Clean up flag handling in low_type_binop().

2020-12-19

2020-12-19 15:42:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Debug: Support dmalloc for pike types again.

2020-12-18

2020-12-18 15:00:29 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Use alloc_pike_type() to allocate types.

2020-12-17

2020-12-17 14:11:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed leak in low_type_binop().

2020-12-16

2020-12-16 16:00:29 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Clean up some of low_type_binop().

2020-12-13

2020-12-13 15:26:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of voidable arguments.

2020-12-06

2020-12-06 22:40:39 by Tobias S. Josefowitz <tobij@tobij.de>

Compiler [Typechecker]: Compile fixes

2020-12-06 14:51:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added PT_FLAG_REMAP_TRACE.

Attempt to avoid drowning in debug output by traceing only
relevant operations.

2020-12-05

2020-12-05 14:53:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved checking of function types.

2020-12-03

2020-12-03 15:34:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Minor adjustment of rendering of string types.

Fixes testsuite failure.

2020-11-03

2020-11-03 11:14:14 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed type_binop() on disjunct types.

2020-11-01

2020-11-01 13:30:59 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix some C-compiler warnings.

2020-10-23

2020-10-23 14:49:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Allow calling remap_markers() with NULL.

This simplifies the code that needs to call remap_markers().

2020-10-21

2020-10-21 16:45:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added some more validation on PIKE_DEBUG.

pike_types_le() now validates low_type_binop(MINUS, ...)
against low_pike_types_le() when --with-rtldebug. It also
validates that the type and type mark stacks are invariant.

2020-10-20

2020-10-20 13:09:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix type stack mark leak.

low_type_binop() leaked type stack marks in some cases when handling
PT_BINOP_MINUS of function types.

2020-10-19

2020-10-19 19:47:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed eval mode in remap_markers().

When we are evaluating, we need to recurse even if we're not
doing any remapping.

2020-10-18

2020-10-18 14:47:25 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added some validation on PIKE_DEBUG.

match_types() now validates low_type_binop(AND, ...)
against low_match_types() when --with-rtldebug.

2020-10-17

2020-10-17 14:20:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed low_type_binop() handling of int.

2020-10-16

2020-10-16 13:52:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed infinite loop in low_type_binop().

There was a break statement that was intended to break a loop,
but instead broke a switch. Replaced with a goto.

Also adds a missing break.

2020-10-15

2020-10-15 10:50:48 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added some implementation notes.

2020-10-14

2020-10-14 15:18:05 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix some more cases in low_type_binop().

It should now handle the same cases as low_intersect_types() and
low_subtract_types().

2020-10-13

2020-10-13 11:06:22 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Use push_binop().

2020-10-12

2020-10-12 07:42:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added low_pop_type().

This function pops a type from the type stack without messing
with the type mark stack.

2020-10-11

2020-10-11 14:02:14 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added push{,_reverse}_binop()

This is a helper function for low_type_binop().

2020-10-10

2020-10-10 14:37:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: First implementation of low_type_binop().

This function unifies low_intersect_types() and low_subtract_types(),
and is intended in the future to also support union (aka or) of types.

2020-10-08

2020-10-08 19:33:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added some FIXMEs.

2020-10-06

2020-10-06 15:33:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Restructured intersect_types() somewhat.

2020-10-05

2020-10-05 17:20:11 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Adjusted API for remap_markers().

remap_markers() can now be used to evaluate markers.

2020-10-04

2020-10-04 14:33:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed typos in DeMorgan special case.

2020-10-03

2020-10-03 12:24:59 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Attempt to reduce amount of type expansion.

2020-10-02

2020-10-02 13:47:16 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Short-circuit double type inversions.

2020-10-01

2020-10-01 11:19:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed multiple bugs in subtract_types().

2020-09-30

2020-09-30 09:28:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Some type rendering adjustments.

2020-09-29

2020-09-29 11:01:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed some bugs in remap_marker() et al.

The allocation and lookup of remapped markers now
seems to work as intended.

2020-09-28

2020-09-28 11:25:32 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed some infinite recursion.

2020-09-27

2020-09-27 12:17:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added {intersect,subtract}_types().

2020-09-26

2020-09-26 12:35:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed some issues with the marker remapper.

* The flags are now in an enum.
* The flag constants have been renamed slightly.
* The PT_FLAG_REMAP_SWAP_MARKERS flag should now work as intended.
* free_marker() now also receives the flags. This is needed
to avoid issues with PT_FLAG_REMAP_SWAP_MARKERS.

2020-09-25

2020-09-25 17:09:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added void_function_type_string.

2020-09-24

2020-09-24 14:42:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added PT_FLAG_BOTH_MARKERS{,_AND,_OR,_MASK}.

This causes remap_markers() to use both marker sets and emit an
T_AND or T_OR type when a marker is found in both.

2020-09-23

2020-09-23 10:47:40 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed even more typos.

2020-09-22

2020-09-22 12:52:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Some more typo fixes.

2020-09-22 11:19:58 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed some typos.

2020-09-21

2020-09-21 16:58:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added alloc_remap_marker().

Changed the remap_marker API slightly. remap_marker() is now strictly
used to lookup the marker mapping, and alloc_remap_marker() to
allocate a new marker in the remapped set.

Also adds and defines the flag PT_FLAG_SWAP_MARKERS.

2020-09-20

2020-09-20 13:05:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added {push_,}remap_markers().

2020-09-18

2020-09-18 17:23:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Preparations for remapping type markers.

2020-09-16

2020-09-16 14:02:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Use PIKE_T_MASK.

2020-09-14

2020-09-14 16:40:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Simplify handling of transitive types somewhat.

2020-09-12

2020-09-12 12:36:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support soft casting of operators to function.

2020-09-11

2020-09-11 15:14:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed issue with expanding of transient types.

2020-09-10

2020-09-10 13:49:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed issue with soft casting of complex functions.

2020-09-09

2020-09-09 14:43:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Enable TYPE_STACK_DEBUG with l_flag.

2020-09-07

2020-09-07 21:05:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix soft casting of complex function types.

2020-08-31

2020-08-31 09:00:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix calling of transitive types.

2020-08-30

2020-08-30 11:37:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Port type matching changes to pike_types_le().

* Protect against infinite recursion.

* Perform proper checking of transitive types (via expand_transitive()).

2020-08-29

2020-08-29 13:54:35 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improve matching against transitive types.

2020-08-28

2020-08-28 17:27:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed some TYPE_STACK_DEBUG() calls.

2020-08-27

2020-08-27 15:17:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix typo in rendering of complex function types.

2020-08-24

2020-08-24 09:52:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved handling of union (aka or) types.

Now that low_match_types() adds a reference to its result, we can
return the matching types for both parts of a union type.

2020-08-21

2020-08-21 13:33:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Changed calling convention for low_match_types().

low_match_types() now adds a reference to the returned type. This fixes
potential issues with matching PIKE_T_OPERATOR and similar, where it
could return a freed type.

2020-08-20

2020-08-20 08:51:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Use match_types() where possible.

Preparation for having low_match_types() add a reference to
its return value.

2020-08-19

2020-08-19 15:38:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed invalid deref in debug code.

2020-08-19 12:47:12 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Protect against infinite recursion.

With the addition of partially expanded types low_match_types()
is at risk of infinite recursion.

2020-08-17

2020-08-17 14:08:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added PIKE_T_TRANSITIVE.

This is a helper type to construct the type for transitive left-
recursive functions (like eg many operator efuns).

2020-08-15

2020-08-15 10:58:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed issue where markers were not expanded.

Fixes multiple erroneous warnings. Eg

Pike v8.1 release 13 running Hilfe v3.5 (Incremental Pike Frontend)
> array a = ({ `+, `-, `/ });
Compiler Warning: 1: Expected object implementing lfun `+.
Compiler Warning: 1: Got : 2.

Also adjusts the warning message somewhat (for when it is relevant) to

Compiler Warning: 1: Expected object implementing lfun::`+().

2020-08-03

2020-08-03 11:10:25 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed bug in soft cast.

Soft casting of complex function types (ie not consisting only
of a chain of T_FUNCTION and T_MANY nodes) was broken.

Potential fix for a SIGSEGV in the testsuite.

2020-07-19

2020-07-19 13:28:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed evaluation order in pike_types_le().

Fixes several obscure issues.

2020-07-18

2020-07-18 10:05:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added operator find_lfun.

This operator returns the type for the specified lfun in
the first argument. Typical intended use is for type-
checking of operators.

Fixes some of #10048.

2020-07-17

2020-07-17 16:02:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added PIKE_T_OPERATOR.

Added generic support for 127 + 127 type operator functions.

This reduces the amount of special cases needed to implement
type operators (like eg find_lfun() or zzap_return()).

Needed for #10048.

2020-07-15

2020-07-15 10:06:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Or-ing a type and its inverse yields mixed.

2020-07-13

2020-07-13 07:09:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Support more complex function types.

Support type nodes other than T_FUNCTION and T_MANY in the cdr
of T_FUNCTION nodes.

Needed for #10048.

2020-05-19

2020-05-19 14:45:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added some more consistency checks to the type checker.

2020-05-18

2020-05-18 14:58:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added some FIXME's to the type checker.

2020-03-14

2020-03-14 08:57:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: The type for >32-bit integers is now int.

This should solve issues with strange derived types due to truncation
with eg sprintf(%c).

Fixes #10018.

2020-01-23

2020-01-23 15:32:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved type checking.

Fixed issue where constant expressions after evaluation sometimes
got a partially weaker type. Eg: The expression

({ 0, 1, 2, 3 })

gets the type array(int(4bit)) from evaluating the type, but
the type array(4: int) from generating a type from the value.
The code generator now adds a soft-cast to the original type,
causing the resulting type to be array(4: int(4bit)).

Fixes testsuite failures for undumped pikes from eg SSL.Context.

2020-01-21

2020-01-21 10:43:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added special case for empty strings and arrays.

2020-01-19

2020-01-19 18:47:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Type-check the length field.

2020-01-18

2020-01-18 13:07:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Add a starting sentinel to the type marker stack.

This makes some debug checks (in eg compiler_discard_top_type())
simpler/not break on empty marker stack.

2020-01-16

2020-01-16 11:54:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Adjusted rendering of zero-length array and string types.

2020-01-16 10:34:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

EFUNs: _typeof() now returns limited length array and string types.

2020-01-14

2020-01-14 11:35:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added serialization of length-limited types.

2020-01-13

2020-01-13 11:50:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed typo in low_describe_type().

Fixes formatting of array types.

2020-01-12

2020-01-12 17:27:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed typo in fatal error message.

2020-01-11

2020-01-11 14:56:48 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved handling output from {simple,low}_describe_type().

{simple,low}_describe_type() now display the length type for
array and string types if it is other than the default.

2020-01-10

2020-01-10 11:44:22 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added low_describe_int_range().

This reduces code duplication and cleans up the code.

2020-01-08

2020-01-08 11:18:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added int_pos_type_string.

2020-01-07

2020-01-07 11:01:11 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Set the length type for array types.

2020-01-04

2020-01-04 13:04:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added compiler_discard_top_type().

2020-01-03

2020-01-03 18:08:25 by Henrik Grubbström (Grubba) <grubba@grubba.org>

GC: Fixed NULL-deref.

2020-01-03 12:18:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler & GC: Fixed some issues with NULL in car for T_ARRAY et al.

2020-01-03 10:00:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Support T_ARRAY and T_STRING nodes with non-NULL car.

Preparation for using the car for holding the length type.

2020-01-02

2020-01-02 13:38:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added push_unlimited_array_type().

This is in preparation for adding support for
length-limited array types.

2019-12-22

2019-12-22 15:07:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Use new syntax when outputting types.

2019-12-17

2019-12-17 11:59:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed broken fallthrough.

2019-12-16

2019-12-16 17:18:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Moved the value type for arrays and strings to cdr.

This is in preparation for using car for the index type. This
can then be used to type the lengths for array and strings.

2019-12-15

2019-12-15 19:33:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Allow free_type(NULL).

2019-10-17

2019-10-17 09:03:58 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Type checker]: Added peek_stack_mark().

2019-07-11

2019-07-11 09:55:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Warn about indexing of deprecated values.