If a test pair dies during cleanup, this saves a bit of hassle trying to figure out which pair had the problem without having to dig through the gravestones.
* 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
* Add ValidateMemberAttribute, analyzer and test
* Use attribute on DirtyFields methods
* Defer member lookup
* Additional test case
* Add support for collection types
* Poke tests
* Revert "Add support for collection types"
This reverts commit 2b8f5534bd.
* break, not continue
* Cheaper attribute check with AttributeHelper
* Clean up unused helper method
---------
Co-authored-by: PJB3005 <pieterjan.briers+git@gmail.com>
* Add Prototype analyzer
* Add Prototype fixer
* Early return after finding prototype attribute
* Add PrototypeEndsWithPrototypeRule diagnostic
* Oops. Uncomment parallelizable.
* Rework to ignore redundancy for non-literal string values
* Allow redundancy when removal would expose class name not ending in "Prototype"
* Promote PrototypeEndsWithPrototypeRule from warning to error, since it causes a runtime error.
* No need to get the symbol to get the class identifier
* Minor cleanup
* A little more cleanup
* More specific location for redundant name
* Refactor redundant name fixer so argument order is no longer important
* Add failing test
* Use symbol analysis to fix alias handling
* Oops! We have to go back to the previous syntax-based approach.
Now it's a hybrid.
Also fixed tests to not copy the prototype definitions.
---------
Co-authored-by: PJB3005 <pieterjan.briers+git@gmail.com>
* Find PlacementModes by attribute
* Let modes specify priority
* Make some PlacementManager dependencies public so Content can use them
* Space out the priorities a bit more
* xmldoc for attribute
* Revert "xmldoc for attribute"
This reverts commit f1f0299c55.
* Revert "Space out the priorities a bit more"
This reverts commit 549eac1eb2.
* Revert "Make some PlacementManager dependencies public so Content can use them"
This reverts commit c060f6cb2d.
* Revert "Let modes specify priority"
This reverts commit f113b40c7f.
* Revert "Find PlacementModes by attribute"
This reverts commit 27efb6c5cf.
* Completely redo to use PlacementManager's mode dictionary
* Backwards compat
* Cache the value of AllModeNames
* Add IRobustCloneable and check for it in compnet generator.
* Redo compnetgenerator support; add test
* Disconnect client at end of test
* Actually test for client entities
* Cleanup
* Cleanup 2
* Make some PlacementManager dependency fields public
* Revert "Make some PlacementManager dependency fields public"
This reverts commit 99fe37b502.
* Now part of IPlacementManager
* Skip fields/properties not in DataDefs
* Only check IsDataField once per field/property
* Remove pointless foreach loop
* Remove an extra IsDataDefinition check
* Revert unneeded changes from testing
* Revert "Remove pointless foreach loop"
This reverts commit f05d566904.
* Restore analysis of multiple declarations
* Clean up all missing EntitySystem proxy method uses
* Restore comment
* Fix bad change that caused closure allocation
* tuple
* Revert "tuple"
This reverts commit 14581a40aa.
* Revert "Fix bad change that caused closure allocation"
This reverts commit 215b2559ed.
* Revert "Restore comment"
This reverts commit 4a47a36557.
* Revert "Clean up all missing EntitySystem proxy method uses"
This reverts commit 3b1fe4ce7f.
* Redo with improved code fixer.
Let's see how it fares this time
* Combine TileChangedEvents in SetTiles
* Raise event after regenerating collision
* continue, not return
* No need for GetComponent
* Swap TileRef for Tile + Vector2i
* Estimate size of tileChanges
* Better location reporting for readonly DataField errors
* Better location reporting for readonly DataField property errors
* Use SyntaxKind instead of string for TryGetModifierLocation