mirror of
https://github.com/github/codeql.git
synced 2026-04-30 03:05:15 +02:00
Rust: add downgrade script
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
class Element extends @element {
|
||||
string toString() { none() }
|
||||
}
|
||||
|
||||
class Location extends @location_default {
|
||||
string toString() { none() }
|
||||
}
|
||||
|
||||
query predicate new_closure_binders(Element id) {
|
||||
for_binders(id) and closure_expr_for_binders(_, id)
|
||||
}
|
||||
|
||||
query predicate new_closure_binder_generic_param_lists(Element id, Element list) {
|
||||
for_binder_generic_param_lists(id, list) and closure_expr_for_binders(_, id)
|
||||
}
|
||||
|
||||
query predicate new_where_pred_generic_param_lists(Element id, Element list) {
|
||||
exists(Element forBinder |
|
||||
where_pred_for_binders(id, forBinder) and
|
||||
for_binder_generic_param_lists(forBinder, list)
|
||||
)
|
||||
}
|
||||
|
||||
// We need to transform `TypeBound(for_binder=ForBinder(generic_param_list=X), type_repr=Y)`
|
||||
// into `TypeBound(type_repr=ForTypeRepr(generic_param_list=X, type_repr=Y))`
|
||||
// we repurpose the `@for_binder` id into a `@for_type_repr` one
|
||||
query predicate new_for_type_reprs(Element id) {
|
||||
for_type_reprs(id) or
|
||||
exists(Element typeBound | type_bound_for_binders(typeBound, id))
|
||||
}
|
||||
|
||||
query predicate new_for_type_repr_generic_param_lists(Element id, Element list) {
|
||||
exists(Element forBinder |
|
||||
for_type_repr_for_binders(id, forBinder) and for_binder_generic_param_lists(forBinder, list)
|
||||
)
|
||||
or
|
||||
exists(Element typeBound |
|
||||
type_bound_for_binders(typeBound, id) and for_binder_generic_param_lists(id, list)
|
||||
)
|
||||
}
|
||||
|
||||
query predicate new_for_type_repr_type_reprs(Element id, Element type) {
|
||||
for_type_repr_type_reprs(id, type)
|
||||
or
|
||||
exists(Element typeBound |
|
||||
type_bound_for_binders(typeBound, id) and type_bound_type_reprs(typeBound, type)
|
||||
)
|
||||
}
|
||||
|
||||
query predicate new_type_bound_type_reprs(Element bound, Element type) {
|
||||
type_bound_type_reprs(bound, type) and not type_bound_for_binders(bound, _)
|
||||
or
|
||||
type_bound_for_binders(bound, type)
|
||||
}
|
||||
|
||||
// remove locations of removed @for_binder elements
|
||||
query predicate new_locatable_locations(Element id, Location loc) {
|
||||
locatable_locations(id, loc) and not where_pred_for_binders(_, id)
|
||||
}
|
||||
|
||||
// remove @asm_expr from the subtypes of @item (and therefore @addressable and @stmt)
|
||||
// this means removing any @asm_expr ids from tables that accept @item, @stmt or @addressable
|
||||
query predicate new_item_attribute_macro_expansions(Element id, Element items) {
|
||||
item_attribute_macro_expansions(id, items) and not asm_exprs(id)
|
||||
}
|
||||
|
||||
query predicate new_item_list_items(Element id, int index, Element item) {
|
||||
item_list_items(id, index, item) and not asm_exprs(item)
|
||||
}
|
||||
|
||||
query predicate new_macro_items_items(Element id, int index, Element item) {
|
||||
macro_items_items(id, index, item) and not asm_exprs(item)
|
||||
}
|
||||
|
||||
query predicate new_source_file_items(Element id, int index, Element item) {
|
||||
source_file_items(id, index, item) and not asm_exprs(item)
|
||||
}
|
||||
|
||||
query predicate new_stmt_list_statements(Element id, int index, Element stmt) {
|
||||
stmt_list_statements(id, index, stmt) and not asm_exprs(stmt)
|
||||
}
|
||||
|
||||
query predicate new_macro_block_expr_statements(Element id, int index, Element stmt) {
|
||||
macro_block_expr_statements(id, index, stmt) and not asm_exprs(stmt)
|
||||
}
|
||||
|
||||
query predicate new_addressable_extended_canonical_paths(Element id, string path) {
|
||||
addressable_extended_canonical_paths(id, path) and not asm_exprs(id)
|
||||
}
|
||||
|
||||
query predicate new_addressable_crate_origins(Element id, string crate) {
|
||||
addressable_crate_origins(id, crate) and not asm_exprs(id)
|
||||
}
|
||||
@@ -1,2 +1,29 @@
|
||||
description: TODO
|
||||
description: Revert rust-analyzer upgrade to 0.0.300
|
||||
compatibility: backwards
|
||||
|
||||
for_type_repr_for_binders.rel: delete
|
||||
where_pred_for_binders.rel: delete
|
||||
type_bound_for_binders.rel: delete
|
||||
for_binders.rel: delete
|
||||
for_binder_generic_param_lists.rel: delete
|
||||
closure_expr_for_binders.rel: delete
|
||||
|
||||
closure_expr_closure_binders.rel: reorder closure_expr_for_binders.rel (@closure_expr id, @for_binder binder) id binder
|
||||
|
||||
closure_binders.rel: run downgrade.ql new_closure_binders
|
||||
closure_binder_generic_param_lists.rel: run downgrade.ql new_closure_binder_generic_param_lists
|
||||
where_pred_generic_param_lists.rel: run downgrade.ql new_where_pred_generic_param_lists
|
||||
for_type_reprs.rel: run downgrade.ql new_for_type_reprs
|
||||
for_type_repr_generic_param_lists.rel: run downgrade.ql new_for_type_repr_generic_param_lists
|
||||
for_type_repr_type_reprs.rel: run downgrade.ql new_for_type_repr_type_reprs
|
||||
type_bound_type_reprs.rel: run downgrade.ql new_type_bound_type_reprs
|
||||
locatable_locations.rel: run downgrade.ql new_locatable_locations
|
||||
|
||||
item_attribute_macro_expansions.rel: run downgrade.ql new_item_attribute_macro_expansions
|
||||
item_list_items.rel: run downgrade.ql new_item_list_items
|
||||
macro_items_items.rel: run downgrade.ql new_macro_items_items
|
||||
source_file_items.rel: run downgrade.ql new_source_file_items
|
||||
stmt_list_statements.rel: run downgrade.ql new_stmt_list_statements
|
||||
macro_block_expr_statements.rel: run downgrade.ql new_macro_block_expr_statements
|
||||
addressable_extended_canonical_paths.rel: run downgrade.ql new_addressable_extended_canonical_paths
|
||||
addressable_crate_origins.rel: run downgrade.ql new_addressable_crate_origins
|
||||
|
||||
Reference in New Issue
Block a user