* [Dependency] source generator
No more reflection, no more codegen at runtime
Also various changes to Roslyn helpers to make this easier to write.
Requires all types with dependencies to be partial and not have readonly dependency fields. An analyzer enforces this at warning level, the previous injection strategies have remained in the code *for now* as a fallback.
No fallback is available for [field: Dependency] properties, due to a Roslyn bug.
Code Fixes exist. We love Roslyn
* Apply dependencies generator changes to all code
* Release notes
* Preprocessor got hands
* Handle nullable dependencies
These are bad but gotta deal with it.
* Apply suggestions from code review
Co-authored-by: Moony <moony@hellomouse.net>
* Fine, let's not use collection expressions
---------
Co-authored-by: Moony <moony@hellomouse.net>
* [Dependency] source generator
No more reflection, no more codegen at runtime
Also various changes to Roslyn helpers to make this easier to write.
Requires all types with dependencies to be partial and not have readonly dependency fields. An analyzer enforces this at warning level, the previous injection strategies have remained in the code *for now* as a fallback.
No fallback is available for [field: Dependency] properties, due to a Roslyn bug.
Code Fixes exist. We love Roslyn
* Release notes
* Handle nullable dependencies
These are bad but gotta deal with it.
* Apply suggestions from code review
Co-authored-by: Moony <moony@hellomouse.net>
* Fine, let's not use collection expressions
---------
Co-authored-by: Moony <moony@hellomouse.net>
* Import tensors and add methods to sbox
* might be a good idea to expose pseudo-ctors
also nuke spans as tey're too much to review rn
* nuke buffers
* nuke unconsumable types
* hilarious
---------
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
* Fix an active denial of service, correctly. Moves a bunch of logging to debug only to avoid amplification.
* One more test.
* Swap over to the NetLogging cvar.
* Be a little more thorough with the bad messages.
* Attribute, analyzer, and tests
* Add attribute to EntitySystem methods
* Code fixer for redundant method name
* Code fixer for proxy substitution
* Comments
* Improve error message when target method is not found
* Modify AddComp signature to match AddComponent (Component -> IComponent)
* Revert "Modify AddComp signature to match AddComponent (Component -> IComponent)"
This reverts commit 1939d11765.
* Check that proxy and target have matching type constraints
* Reapply "Modify AddComp signature to match AddComponent (Component -> IComponent)"
This reverts commit a65ea71b9b.
Might as well include this, since the file needs to be changed anyway.
* Boost efficiency by only searching for proxy methods once.
Previously we searched with each method invocation.
This also lets us skip analysis on classes with no proxy methods available.
* Revert unrelated change
* Fine, I'll do it properly
* Misleading method name
* Preserve trivia when when replacing method
* Prevent flagging method calls on non-member variables
* Prevent flagging method calls on other classes
* Switch to new HasAttribute helper
* comment fix
* Switch ProxyMethod from struct to class
* Kill TryGetAttributeSyntax
* Move member owner check to helper
* Use helper for proxy method search
* meh
* A little bit of documentation never hurt anybody
* Test attributes
* Convert AnalyzeDeclaration from SyntaxNodeAction to OperationAction
* You can keep the comment though