Skip to content

Commit 25ab2e0

Browse files
redsun82Copilot
andcommitted
Rust: Add full downgrade script for dbscheme migration
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 7f2bda1 commit 25ab2e0

2 files changed

Lines changed: 205 additions & 1 deletion

File tree

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
description: Downgrade from rust-analyzer 0.0.328 to 0.0.301
2-
compatibility: partial
2+
compatibility: full
33

44
block_expr_try_block_modifiers.rel: delete
5+
block_expr_is_try.rel: run upgrade.ql new_block_expr_is_try
56
cfg_atoms.rel: delete
67
cfg_attr_meta.rel: delete
78
cfg_attr_meta_cfg_predicates.rel: delete
@@ -10,20 +11,49 @@ cfg_composites.rel: delete
1011
cfg_composite_cfg_predicates.rel: delete
1112
cfg_meta.rel: delete
1213
cfg_meta_cfg_predicates.rel: delete
14+
const_args.rel: run upgrade.ql new_const_args
15+
const_arg_exprs.rel: run upgrade.ql new_const_arg_exprs
1316
format_args_arg_arg_names.rel: delete
17+
format_args_arg_names.rel: run upgrade.ql new_format_args_arg_names
1418
key_value_meta.rel: delete
1519
key_value_meta_exprs.rel: delete
1620
key_value_meta_paths.rel: delete
21+
locatable_locations.rel: run upgrade.ql new_locatable_locations
22+
meta.rel: run upgrade.ql new_meta
23+
meta_exprs.rel: run upgrade.ql new_meta_exprs
24+
meta_is_unsafe.rel: run upgrade.ql new_meta_is_unsafe
25+
meta_paths.rel: run upgrade.ql new_meta_paths
26+
meta_token_trees.rel: run upgrade.ql new_meta_token_trees
27+
names.rel: run upgrade.ql new_names
1728
path_meta.rel: delete
1829
path_meta_paths.rel: delete
1930
struct_field_default_vals.rel: delete
31+
struct_field_defaults.rel: run upgrade.ql new_struct_field_defaults
2032
token_tree_meta.rel: delete
2133
token_tree_meta_paths.rel: delete
2234
token_tree_meta_token_trees.rel: delete
35+
trait_assoc_item_lists.rel: run upgrade.ql new_trait_assoc_item_lists
36+
trait_attrs.rel: run upgrade.ql new_trait_attrs
37+
trait_generic_param_lists.rel: run upgrade.ql new_trait_generic_param_lists
38+
trait_is_auto.rel: run upgrade.ql new_trait_is_auto
39+
trait_is_unsafe.rel: run upgrade.ql new_trait_is_unsafe
40+
trait_names.rel: run upgrade.ql new_trait_names
41+
trait_type_bound_lists.rel: run upgrade.ql new_trait_type_bound_lists
42+
trait_visibilities.rel: run upgrade.ql new_trait_visibilities
43+
trait_where_clauses.rel: run upgrade.ql new_trait_where_clauses
44+
trait_aliases.rel: run upgrade.ql new_trait_aliases
45+
trait_alias_attrs.rel: run upgrade.ql new_trait_alias_attrs
46+
trait_alias_generic_param_lists.rel: run upgrade.ql new_trait_alias_generic_param_lists
47+
trait_alias_names.rel: run upgrade.ql new_trait_alias_names
48+
trait_alias_type_bound_lists.rel: run upgrade.ql new_trait_alias_type_bound_lists
49+
trait_alias_visibilities.rel: run upgrade.ql new_trait_alias_visibilities
50+
trait_alias_where_clauses.rel: run upgrade.ql new_trait_alias_where_clauses
51+
traits.rel: run upgrade.ql new_traits
2352
try_block_modifier_is_try.rel: delete
2453
try_block_modifiers.rel: delete
2554
try_block_modifier_type_reprs.rel: delete
2655
unsafe_meta.rel: delete
2756
unsafe_meta_is_unsafe.rel: delete
2857
unsafe_meta_meta.rel: delete
2958
variant_const_args.rel: delete
59+
variant_discriminants.rel: run upgrade.ql new_variant_discriminants
Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
class Element extends @element {
2+
string toString() { none() }
3+
}
4+
5+
class Location extends @location_default {
6+
string toString() { none() }
7+
}
8+
9+
private predicate wrapperConstArg(Element id) {
10+
struct_field_default_vals(_, id) or variant_const_args(_, id)
11+
}
12+
13+
private predicate traitIsAlias(Element id) {
14+
traits(id) and trait_type_bound_lists(id, _) and not trait_assoc_item_lists(id, _)
15+
}
16+
17+
private predicate sourceMeta(Element id) {
18+
path_meta(id) or
19+
key_value_meta(id) or
20+
token_tree_meta(id) or
21+
unsafe_meta(id) or
22+
cfg_meta(id) or
23+
cfg_attr_meta(id)
24+
}
25+
26+
private predicate unsafeInnerMeta(Element id) {
27+
unsafe_meta_meta(_, id)
28+
}
29+
30+
private predicate metaPath(Element id, Element path) {
31+
path_meta_paths(id, path) or key_value_meta_paths(id, path) or token_tree_meta_paths(id, path)
32+
}
33+
34+
private predicate metaExpr(Element id, Element expr) {
35+
key_value_meta_exprs(id, expr)
36+
}
37+
38+
private predicate metaTokenTree(Element id, Element tokenTree) {
39+
token_tree_meta_token_trees(id, tokenTree)
40+
}
41+
42+
private predicate deletedElement(Element id) {
43+
wrapperConstArg(id) or
44+
unsafeInnerMeta(id) or
45+
cfg_atoms(id) or
46+
cfg_composites(id) or
47+
try_block_modifiers(id)
48+
}
49+
50+
query predicate new_block_expr_is_try(Element id) {
51+
exists(Element modifier | block_expr_try_block_modifiers(id, modifier) and try_block_modifier_is_try(modifier))
52+
}
53+
54+
query predicate new_names(Element id) {
55+
names(id) or format_args_arg_names(id)
56+
}
57+
58+
query predicate new_format_args_arg_names(Element id, Element name) {
59+
format_args_arg_arg_names(id, name)
60+
}
61+
62+
query predicate new_const_args(Element id) {
63+
const_args(id) and not wrapperConstArg(id)
64+
}
65+
66+
query predicate new_const_arg_exprs(Element id, Element expr) {
67+
const_arg_exprs(id, expr) and not wrapperConstArg(id)
68+
}
69+
70+
query predicate new_struct_field_defaults(Element id, Element expr) {
71+
exists(Element constArg | struct_field_default_vals(id, constArg) and const_arg_exprs(constArg, expr))
72+
}
73+
74+
query predicate new_variant_discriminants(Element id, Element expr) {
75+
exists(Element constArg | variant_const_args(id, constArg) and const_arg_exprs(constArg, expr))
76+
}
77+
78+
query predicate new_meta(Element id) {
79+
sourceMeta(id) and not unsafeInnerMeta(id)
80+
}
81+
82+
query predicate new_meta_paths(Element id, Element path) {
83+
metaPath(id, path) and not unsafeInnerMeta(id)
84+
or
85+
exists(Element inner | unsafe_meta_meta(id, inner) and metaPath(inner, path))
86+
}
87+
88+
query predicate new_meta_exprs(Element id, Element expr) {
89+
metaExpr(id, expr) and not unsafeInnerMeta(id)
90+
or
91+
exists(Element inner | unsafe_meta_meta(id, inner) and metaExpr(inner, expr))
92+
}
93+
94+
query predicate new_meta_token_trees(Element id, Element tokenTree) {
95+
metaTokenTree(id, tokenTree) and not unsafeInnerMeta(id)
96+
or
97+
exists(Element inner | unsafe_meta_meta(id, inner) and metaTokenTree(inner, tokenTree))
98+
}
99+
100+
query predicate new_meta_is_unsafe(Element id) {
101+
unsafe_meta_is_unsafe(id)
102+
}
103+
104+
query predicate new_traits(Element id) {
105+
traits(id) and not traitIsAlias(id)
106+
}
107+
108+
query predicate new_trait_assoc_item_lists(Element id, Element assocItemList) {
109+
trait_assoc_item_lists(id, assocItemList) and not traitIsAlias(id)
110+
}
111+
112+
query predicate new_trait_attrs(Element id, int index, Element attr) {
113+
trait_attrs(id, index, attr) and not traitIsAlias(id)
114+
}
115+
116+
query predicate new_trait_generic_param_lists(Element id, Element genericParamList) {
117+
trait_generic_param_lists(id, genericParamList) and not traitIsAlias(id)
118+
}
119+
120+
query predicate new_trait_is_auto(Element id) {
121+
trait_is_auto(id) and not traitIsAlias(id)
122+
}
123+
124+
query predicate new_trait_is_unsafe(Element id) {
125+
trait_is_unsafe(id) and not traitIsAlias(id)
126+
}
127+
128+
query predicate new_trait_names(Element id, Element name) {
129+
trait_names(id, name) and not traitIsAlias(id)
130+
}
131+
132+
query predicate new_trait_type_bound_lists(Element id, Element typeBoundList) {
133+
trait_type_bound_lists(id, typeBoundList) and not traitIsAlias(id)
134+
}
135+
136+
query predicate new_trait_visibilities(Element id, Element visibility) {
137+
trait_visibilities(id, visibility) and not traitIsAlias(id)
138+
}
139+
140+
query predicate new_trait_where_clauses(Element id, Element whereClause) {
141+
trait_where_clauses(id, whereClause) and not traitIsAlias(id)
142+
}
143+
144+
query predicate new_trait_aliases(Element id) {
145+
traitIsAlias(id)
146+
}
147+
148+
query predicate new_trait_alias_attrs(Element id, int index, Element attr) {
149+
trait_attrs(id, index, attr) and traitIsAlias(id)
150+
}
151+
152+
query predicate new_trait_alias_generic_param_lists(Element id, Element genericParamList) {
153+
trait_generic_param_lists(id, genericParamList) and traitIsAlias(id)
154+
}
155+
156+
query predicate new_trait_alias_names(Element id, Element name) {
157+
trait_names(id, name) and traitIsAlias(id)
158+
}
159+
160+
query predicate new_trait_alias_type_bound_lists(Element id, Element typeBoundList) {
161+
trait_type_bound_lists(id, typeBoundList) and traitIsAlias(id)
162+
}
163+
164+
query predicate new_trait_alias_visibilities(Element id, Element visibility) {
165+
trait_visibilities(id, visibility) and traitIsAlias(id)
166+
}
167+
168+
query predicate new_trait_alias_where_clauses(Element id, Element whereClause) {
169+
trait_where_clauses(id, whereClause) and traitIsAlias(id)
170+
}
171+
172+
query predicate new_locatable_locations(Element id, Location location) {
173+
locatable_locations(id, location) and not deletedElement(id)
174+
}

0 commit comments

Comments
 (0)