Carp/core
Scott Olsen c1e794c4cc
More Unit type member enhancements (#986)
* Emit/Deftype: Add a few more special cases for Unit members

There were a few gaps remaining in our handling of Unit types as members
of user defined types, most notably, generic setters weren't handling
Units appropriately. This commit adds special checks for Unit types in
generic setters, and also accounts for a Unit refs:

- Specialize generic setter functions against Unit members
- Specialize calls to str/prn against Unit members in StructUtils
  (rather than accessing the struct member, which doesn't exist in the
  Unit case, we simple call Unit's prn function (added in the next
  commit).
- Don't bind references to Unit values to variables. This fixes an error
  whereby a reference to a Unit would generate invalid C such as:
  `void* _9 = &;`
  Likewise, we omit references to Units from function arguments just as
  we omit Unit values.

* Unit: Add Unit type implementations for common interfaces.

Now that Unit can be used as a member type it is subject to several
interfaces, such as prn, that it previously hadn't implemented.

This commit adds Unit.carp to core which implements `prn`, `copy`, and
`zero` for the Unit type.

* Deftype: Return null pointers for Unit getters

This is *hopefully* one of the final updates needed to fully support
Unit's as member types. Getters for fields of such types have no struct
member to read, but are expected to return a void pointer; so we return
a NULL void pointer instead.

This commit also updates our emissions for function calls to prevent
assigning the results of functions with Unit and (Ref Unit) return types
to variables.

* Emit: Filter void args from lambda calls

Just as we filter void argument types from other function calls, we now
filter them from calls to lambdas.
2020-11-21 05:57:03 +01:00
..
Array.carp core: move range into array ext and add unsafe-range 2020-05-21 15:23:29 +02:00
ArrayExt.carp core: update dcostring for range-or-default 2020-05-24 12:51:11 +02:00
Bench.carp core: move elapsed_time into bench module 2020-01-27 16:56:22 +01:00
Binary.carp Move Byte Order type outside of the Binary module 2020-03-20 19:02:55 -04:00
Bool.carp core: add Bool.zero 2020-06-23 12:26:53 +02:00
Byte.carp core: make bit-* interfaces 2020-07-08 21:11:28 +02:00
carp_bench.h core: move elapsed_time into bench module 2020-01-27 16:56:22 +01:00
carp_binary.h all: various long fixes 2020-04-23 21:50:30 +02:00
carp_bool.h core: do not have short functions on single lines 2019-10-30 11:07:32 +01:00
carp_byte.h core: fix #688 by using the correct formatting macros\n\n(and pray that windows does c99) 2020-02-21 12:28:34 +01:00
carp_char.h Merge 2020-05-11 16:10:35 +02:00
carp_debug.h Preserve includes order in generated output. 2019-10-03 00:23:27 +02:00
carp_double.h Long type to ensure longs are actually 64 bits. 2020-04-22 10:40:06 +02:00
carp_float.h core: do not have short functions on single lines 2019-10-30 11:07:32 +01:00
carp_int.h core: do not have short functions on single lines 2019-10-30 11:07:32 +01:00
carp_io.h Hopefully portable and simple get-line. 2020-05-11 16:08:40 +02:00
carp_long.h Detect __builtin_x_overflow() based on __GNUC__ macro. 2020-05-23 19:03:07 +02:00
carp_memory.h all: various long fixes 2020-04-23 21:50:30 +02:00
carp_pattern.h Remove braces so different clang-formats output the same. 2020-05-30 09:32:50 +02:00
carp_safe_int.h Detect __builtin_x_overflow() based on __GNUC__ macro. 2020-05-23 19:03:07 +02:00
carp_stdbool.h core: remove stdbool dependency 2018-11-17 15:42:36 +01:00
carp_stdint.h all: various long fixes 2020-04-23 21:50:30 +02:00
carp_string.h Fix crash reported in #923. 2020-11-16 23:46:16 +01:00
carp_system.h core: use static array for args 2020-08-24 11:20:52 +02:00
carp_utf8.h Fix crash reported in #923. 2020-11-16 23:46:16 +01:00
Char.carp Add some more calls to implement to make tests pass 2020-05-10 13:32:22 -04:00
Collection.carp Add some more calls to implement to make tests pass 2020-05-10 13:32:22 -04:00
Color.carp Add some more calls to implement to make tests pass 2020-05-10 13:32:22 -04:00
Control.carp Fix signature of Control.iterate-until 2020-05-20 23:40:46 -04:00
Core.carp More Unit type member enhancements (#986) 2020-11-21 05:57:03 +01:00
core.h Add support for cross-compilation. 2020-10-10 20:01:18 +02:00
Debug.carp core: fix Debug.trace for new evaluator 2020-05-16 12:46:05 +02:00
Double.carp Add remaining implements declarations 2020-05-10 22:53:35 -04:00
Dynamic.carp Implement load-stack. 2020-06-28 19:53:43 +02:00
Filepath.carp core: make subarry/substring slice 2020-02-11 09:09:30 +01:00
Float.carp core: add implements for FloatRef comparators 2020-05-12 22:45:29 +02:00
Format.carp Implement private 2020-06-19 10:30:55 -04:00
Generics.carp core: fix typo in docs for Generis.approx 2020-05-13 16:45:11 +02:00
Geometry.carp Generics no longer propagated. 2019-09-09 22:08:50 +02:00
GLFW.carp Added some of GLFW constants 2020-06-18 23:19:31 +02:00
Heap.carp Fix all nth usage 2019-10-31 06:23:23 -03:00
Int.carp core: make bit-* interfaces 2020-07-08 21:11:28 +02:00
Interfaces.carp core: make bit-* interfaces 2020-07-08 21:11:28 +02:00
Introspect.carp Index arguments from 0 in with-copy 2020-08-18 22:52:56 -04:00
IO.carp Merge 2020-05-11 16:10:35 +02:00
Long.carp Add support for cross-compilation. 2020-10-10 20:01:18 +02:00
Macros.carp Makes last argument to inline-c optional 2020-10-26 18:20:01 +00:00
Map.carp Add some more calls to implement to make tests pass 2020-05-10 13:32:22 -04:00
Maybe.carp core: make NULL Ptr a instead of a 2020-05-18 23:21:16 +02:00
Opaque.carp Update Opaque docs; fix typos 2020-06-18 09:57:28 -04:00
OpenGL.carp Add header/lib for OpenGL on each platform. 2020-06-29 11:57:06 +02:00
Pattern.carp Merge pull request #769 from scolsen/implement-prim 2020-05-12 21:45:29 +02:00
Phantom.carp core: add docs for phantom 2020-06-17 19:06:49 +02:00
Pointer.carp core: add String.to-bytes 2020-05-13 17:15:26 +02:00
Random.carp core: call Random.reseed at program start 2020-10-14 15:31:26 +02:00
Result.carp Add some more calls to implement to make tests pass 2020-05-10 13:32:22 -04:00
SafeInt.carp Added --compile-fast to compile with tcc. 2020-05-21 20:04:54 +02:00
SDL_gfx.carp Refactored flags handling (add-pkg). 2019-06-17 09:02:34 +02:00
SDL_image.carp Add support for cross-compilation. 2020-10-10 20:01:18 +02:00
SDL_mixer.carp Merge 2020-05-11 16:10:35 +02:00
SDL_ttf.carp Merge 2020-05-11 16:10:35 +02:00
SDL.carp Add support for cross-compilation. 2020-10-10 20:01:18 +02:00
SDLHelper.h core: fix SDL for newer versions 2020-10-15 13:14:31 +02:00
Sort.carp core: add sort flavors with custom comparators 2018-11-13 11:11:21 +01:00
StaticArray.carp Adds unsafe-raw to StaticArray module 2020-11-07 17:49:41 +00:00
Statistics.carp Fix all nth usage 2019-10-31 06:23:23 -03:00
StdInt.carp Moves StdInt functions with dependency on String into String.carp 2020-10-26 19:14:50 +00:00
String.carp docs: Try adding some docs to retrigger github action 2020-11-18 22:53:13 +01:00
System.carp core: use static array for args 2020-08-24 11:20:52 +02:00
Test.carp Add support for cross-compilation. 2020-10-10 20:01:18 +02:00
Tuples.carp docs: fix typo in Quadruple docs 2020-10-15 15:16:37 +02:00
Unit.carp More Unit type member enhancements (#986) 2020-11-21 05:57:03 +01:00
Unsafe.carp core: rearrange templates 2020-05-12 21:58:40 +02:00
Vector.carp Add remaining implements declarations 2020-05-10 22:53:35 -04:00