aboutsummaryrefslogtreecommitdiff
path: root/src/check_decl.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Perform type kind check before making use relevant fields in objc_superclass ↵Harold Brenes2025-10-081-5/+5
| | | | check
* Merge pull request #5727 from harold-b/hb.intrinsics.objc_supergingerBill2025-10-051-42/+80
|\ | | | | Add intrinsics.objc_super and Automatically emit objc_msgSend calls
| * Automatically emit objc_msgSend calls when calling imported or implemented ↵Harold Brenes2025-09-291-42/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Objective-C methods - Add intrinsics.objc_super() - Emit objc_msgSendSuper2 calls when an objc method call is combined with objc_super(self) - Fix objc_block return value ABI for large struct returns - Fix objc_implement method wrappers bad ABI for large struct returns and indirect args - Simplify parameter forwarding for objc_imlpement methods - Add intrinsics.objc_instancetype to mimi Objective-C instancetype* returns This facilitates returning the correct type on subclasses when calling mehtods such as `alloc`, `init`, `retain`, etc. - Refactor Objective-C class implementations generation so that hierarchies are properly initialized - Better codegen for context passing with ivar-based autocontext - Allow @superclass on imported objc-c objects - Better codegen for block forwarding invoker, arguments are forwarded directly
* | Preempt field checking on `signature_parameter_similar_enough` with a type ↵Harold Brenes2025-09-301-2/+7
| | | | | | | | ptr equality check
* | Short circuit for `#raw_union` in `signature_parameter_similar_enough`gingerBill2025-09-301-0/+3
| |
* | Improve `signature_parameter_similar_enough` for structsgingerBill2025-09-301-2/+32
| |
* | Fix various foreign signaturesHarold Brenes2025-09-291-0/+6
|/
* Allow for constant `[]typeid`gingerBill2025-09-281-0/+21
|
* Allow unions with one variant to be constantgingerBill2025-09-191-1/+1
|
* `Entity *` to `std::atomic<Entity *>` to remove the need for a PtrMap+MutexgingerBill2025-09-191-4/+4
|
* Minimize mutex usage when in single threaded mode.gingerBill2025-09-101-1/+1
|
* Minor mutex rearrangementgingerBill2025-09-101-2/+2
|
* Use macro instead of a C++ iterator - for speedgingerBill2025-09-101-1/+1
| | | | C++ iterators are bad.
* Minimize more thread contentiongingerBill2025-09-101-2/+2
|
* Add `@(raddbg_type_view=<optional-string>)`gingerBill2025-08-211-0/+7
| | | | | If no string parameter is provided, then one will be generated from the struct field tags. The attribute must be applied if the automatic struct field tag approach is to be used.
* Add `#+feature global-context`gingerBill2025-08-101-1/+6
| | | | This allows to use of `context` in the global scope on a per file basis.
* Disallow `proc "odin"` procedures to be called in the global scope in ↵gingerBill2025-08-081-0/+6
| | | | variable declarations
* Add `string16` and `cstring16` (UTF-16 based strings)gingerBill2025-08-021-0/+6
|
* Remove the semantics of `#no_copy`, keep the grammargingerBill2025-07-301-7/+0
|
* Allow objective-c procedures to have their `@objc_name` attribute inferred.Harold Brenes2025-07-161-94/+102
| | | | | | The `@objc_name` is automatically inferred if it is not specified and the procedure name is prefixed with type name specified in `@objc_type`, followed by an `_`. What followed the `_` is interpreted as the `@objc_name`.
* Forbid nested declaration of instrumentation proceduresFeoramund2025-06-231-0/+6
| | | | Fixes #3774
* Fix spurious failure to compile procedures marked `@instrumentation_enter`Feoramund2025-06-231-0/+1
| | | | | The type `Source_Code_Location` may not be available yet, which causes the compiler to not recognize the procedure type correctly.
* Add `@(no_sanitize_memory)` proc attribute with MSan additions to ↵Feoramund2025-06-051-0/+1
| | | | `base:sanitizer`
* Merge pull request #5064 from harold-b/hb/objc-classesgingerBill2025-05-081-36/+177
|\ | | | | Add support for Objective-C class implementation
| * Resolve other TODOsHarold Brenes2025-05-031-87/+86
| |
| * Remove some TODO. Leave important noteHarold Brenes2025-05-031-0/+4
| |
| * Move unconditionally exporting Objective-C methods to the right locationHarold Brenes2025-05-031-1/+13
| |
| * Fix checker errors.Harold Brenes2025-05-031-15/+15
| |
| * Prevent multiple uses of the same Objective-C class nameHarold Brenes2025-05-031-0/+9
| |
| * Implement all checker specification for Objective-C class implementations ↵Harold Brenes2025-05-031-9/+33
| | | | | | | | and `objc_ivar_get` intrinsic
| * Cleanup ivar generation for selector expressions.Harold Brenes2025-04-301-1/+1
| | | | | | | | Cleanup ObjC superclass resolution.
| * Better Objective-C object superclass cycle checkHarold Brenes2025-04-301-36/+34
| |
| * Fix indentationsHarold Brenes2025-04-271-87/+87
| | | | | | | | Fix Objective-C wrapper procs not forwarding return value
| * Add support for Objective-C method implementation with Odin calling convention.Harold Brenes2025-04-231-22/+44
| | | | | | | | Use @objc_context_provider to provide a context for a type.
| * Add initial support for Objective-C class implementationHarold Brenes2025-04-201-0/+73
| |
* | Add attribute @(no_sanitize_address)Lucas Perlind2025-05-011-0/+1
|/ | | | | | | | | | | The purposes of this attribute is to let procedures opt-out of being instrumented with asan. Typically an allocator that includes 'in-band' meta-data will be accessing poisoned values (such as tlsf). Making asan work with these allocators becomes very challenging so just being to ignore asan within specific allocator procedures makes it easier to reason and removes the need to temporarily poison and unpoison allocator data.
* fix not resolving to alias in a recursive declarationLaytan2025-04-161-1/+5
|
* Fix #4975dev-2025-04gingerBill2025-04-031-0/+4
|
* Use `TypeSet` for DeclInfo depsgingerBill2025-02-181-2/+2
|
* Work on making name mangling deterministicgingerBill2025-02-171-0/+6
|
* Remove debug codegingerBill2025-02-051-1/+1
|
* `@(export) foreign import` to be package scope levelgingerBill2025-01-301-1/+2
|
* fix grammar in error messagejason2025-01-211-1/+1
|
* Merge pull request #4608 from zen3ger/assignment-of-non-specialized-parapolygingerBill2025-01-011-4/+6
|\ | | | | Fix crash on assignment of parapoly proc to variable
| * Fix crash on assignment of parapoly proc to variableRoland Kovacs2024-12-221-4/+6
| |
* | Support multiple paths for wasm in `foreign import`gingerBill2025-01-011-46/+42
|/
* Fix #4390 by assigning invalid entity typeMisomosi2024-10-201-3/+4
|
* Fix #4330gingerBill2024-10-021-0/+4
|
* make c vararg with any vs concrete type similar enoughLaytan2024-09-041-0/+24
|
* fix `open` bindingsLaytan Laats2024-08-161-0/+15
| | | | | | | | | | `open` specifies the `mode` argument as vararg (presumably to make it optional). varargs actually have rules about casting, in this case the rule that any integer arg of size <= 4 has to be casted to `i32` before passing it. Not doing that implicit cast makes the permissions wrong or not apply at all.