mirror of
https://github.com/open-goal/jak-project
synced 2026-05-27 08:09:29 -04:00
abf61a94fb
Adding support for better child-type method docstrings. This is a
problem unique to methods.
Usually, a child-type will have the same signature and a common name
will apply, but the implementation is different. This means, you
probably want a different docstring to describe what is happening.
Currently this is possible to do via `:replace`. The problem with
replace is two fold:
- a replaced method ends up in the generated `deftype`...because you
usually change the signature!
- we don't put docstrings in the `deftype` in normal GOAL, this is just
something we do for the `all-types` file (they go in the `defmethod`
instead)
- more importantly, this means anytime you now want to change the
parent's name/args/return type -- you have to apply that change
everywhere.
So this is a better design you can now just declare the method like so:
```clj
(:override-doc "my new docstring" <method_id>)
```
And internally a pseudo-replaced method will be added, but it will
inherit everything from the parent (except the docstring of course)
Unrelated - I also made all the keyword args for declaring methods not
depend on ordering
This also adds support for documenting virtual and non-virtual state
handlers. For example:
```clj
(:states
(part-tester-idle (:event "test") symbol))
```
or
```clj
(idle () _type_ :state (:event "test") 20)
```
I will probably add the ability to give some sort of over-view docstring
at a later date.
Co-authored-by: water <awaterford111445@gmail.com>
25 lines
1.1 KiB
C++
25 lines
1.1 KiB
C++
#pragma once
|
|
#include <string>
|
|
|
|
#include "decompiler/Function/Function.h"
|
|
|
|
namespace decompiler {
|
|
|
|
enum class FunctionDefSpecials { NONE, DEFUN_DEBUG };
|
|
|
|
std::string final_defun_out(const Function& func,
|
|
const Env& env,
|
|
const DecompilerTypeSystem& dts,
|
|
FunctionDefSpecials special_mode = FunctionDefSpecials::NONE);
|
|
std::string write_from_top_level(const Function& top_level,
|
|
const DecompilerTypeSystem& dts,
|
|
const LinkedObjectFile& file,
|
|
const std::vector<std::string>& imports,
|
|
const std::unordered_set<std::string>& skip_functions);
|
|
|
|
goos::Object get_arg_list_for_function(const Function& func, const Env& env);
|
|
goos::Object final_output_lambda(const Function& function);
|
|
goos::Object final_output_defstate_anonymous_behavior(const Function& func,
|
|
const DecompilerTypeSystem& dts);
|
|
} // namespace decompiler
|