mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 9.0.1741: No type checking in interfaces
Problem: No type checking in interfaces Solution: Implement member type check in vim9 interfaces Most of the code is a small refactoring to allow the use of a where_T for signaling the type mismatch, the type checking itself is pretty simple. Improve where_T error reports Let the caller explicitly define the kind of location it's referring to and free the WT_ARGUMENT enum from its catch-all role. Implement type checking for interface methods Follows closely the logic used for type-checking the members. closes: #12844 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: LemonBoy <thatlemon@gmail.com>
This commit is contained in:
committed by
Christian Brabandt
parent
56bafd7a6a
commit
c5d2744c04
@@ -4764,14 +4764,22 @@ typedef enum {
|
||||
MAGIC_ALL = 4 // "\v" very magic
|
||||
} magic_T;
|
||||
|
||||
typedef enum {
|
||||
WT_UNKNOWN = 0, // Unknown or unspecified location
|
||||
WT_ARGUMENT,
|
||||
WT_VARIABLE,
|
||||
WT_MEMBER,
|
||||
WT_METHOD,
|
||||
} wherekind_T;
|
||||
|
||||
// Struct used to pass to error messages about where the error happened.
|
||||
typedef struct {
|
||||
char *wt_func_name; // function name or NULL
|
||||
char wt_index; // argument or variable index, 0 means unknown
|
||||
char wt_variable; // "variable" when TRUE, "argument" otherwise
|
||||
char *wt_func_name; // function name or NULL
|
||||
char wt_index; // argument or variable index, 0 means unknown
|
||||
wherekind_T wt_kind; // "variable" when TRUE, "argument" otherwise
|
||||
} where_T;
|
||||
|
||||
#define WHERE_INIT {NULL, 0, 0}
|
||||
#define WHERE_INIT {NULL, 0, WT_UNKNOWN}
|
||||
|
||||
// Struct passed to get_v_event() and restore_v_event().
|
||||
typedef struct {
|
||||
|
Reference in New Issue
Block a user