diff --git a/generator/src/main.rs b/generator/src/main.rs index 88acbfdc3f0..8d550673323 100644 --- a/generator/src/main.rs +++ b/generator/src/main.rs @@ -247,9 +247,141 @@ fn convert_nodes<'a>(nodes: &'a node_types::NodeTypeMap) -> Vec Vec> { + vec![ + // duplicateCode( + // unique int id: @duplication, + // string relativePath: string ref, + // int equivClass: int ref); + dbscheme::Entry::Table(dbscheme::Table { + name: "duplicateCode", + keysets: None, + columns: vec![ + dbscheme::Column { + db_type: dbscheme::DbColumnType::Int, + name: "id", + unique: true, + ql_type: ql::Type::AtType("duplication"), + ql_type_is_ref: false, + }, + dbscheme::Column { + db_type: dbscheme::DbColumnType::String, + name: "relativePath", + unique: false, + ql_type: ql::Type::String, + ql_type_is_ref: true, + }, + dbscheme::Column { + db_type: dbscheme::DbColumnType::Int, + name: "equivClass", + unique: false, + ql_type: ql::Type::Int, + ql_type_is_ref: true, + }, + ], + }), + // similarCode( + // unique int id: @similarity, + // string relativePath: string ref, + // int equivClass: int ref); + dbscheme::Entry::Table(dbscheme::Table { + name: "similarCode", + keysets: None, + columns: vec![ + dbscheme::Column { + db_type: dbscheme::DbColumnType::Int, + name: "id", + unique: true, + ql_type: ql::Type::AtType("similarity"), + ql_type_is_ref: false, + }, + dbscheme::Column { + db_type: dbscheme::DbColumnType::String, + name: "relativePath", + unique: false, + ql_type: ql::Type::String, + ql_type_is_ref: true, + }, + dbscheme::Column { + db_type: dbscheme::DbColumnType::Int, + name: "equivClass", + unique: false, + ql_type: ql::Type::Int, + ql_type_is_ref: true, + }, + ], + }), + // @duplication_or_similarity = @duplication | @similarity + dbscheme::Entry::Union(dbscheme::Union { + name: "duplication_or_similarity", + members: ["duplication", "similarity"].iter().cloned().collect(), + }), + // tokens( + // int id: @duplication_or_similarity ref, + // int offset: int ref, + // int beginLine: int ref, + // int beginColumn: int ref, + // int endLine: int ref, + // int endColumn: int ref); + dbscheme::Entry::Table(dbscheme::Table { + name: "tokens", + keysets: None, + columns: vec![ + dbscheme::Column { + db_type: dbscheme::DbColumnType::Int, + name: "id", + unique: false, + ql_type: ql::Type::AtType("duplication_or_similarity"), + ql_type_is_ref: true, + }, + dbscheme::Column { + db_type: dbscheme::DbColumnType::Int, + name: "offset", + unique: false, + ql_type: ql::Type::Int, + ql_type_is_ref: true, + }, + dbscheme::Column { + db_type: dbscheme::DbColumnType::Int, + name: "beginLine", + unique: false, + ql_type: ql::Type::Int, + ql_type_is_ref: true, + }, + dbscheme::Column { + db_type: dbscheme::DbColumnType::Int, + name: "beginColumn", + unique: false, + ql_type: ql::Type::Int, + ql_type_is_ref: true, + }, + dbscheme::Column { + db_type: dbscheme::DbColumnType::Int, + name: "endLine", + unique: false, + ql_type: ql::Type::Int, + ql_type_is_ref: true, + }, + dbscheme::Column { + db_type: dbscheme::DbColumnType::Int, + name: "endColumn", + unique: false, + ql_type: ql::Type::Int, + ql_type_is_ref: true, + }, + ], + }), + ] +} + fn create_tokeninfo<'a>( token_kinds: Map<&'a str, usize>, ) -> (dbscheme::Case<'a>, dbscheme::Table<'a>) { diff --git a/ql/src/ruby.dbscheme b/ql/src/ruby.dbscheme index eadc2713801..d7a254c338c 100644 --- a/ql/src/ruby.dbscheme +++ b/ql/src/ruby.dbscheme @@ -1435,3 +1435,26 @@ case @token.kind of @ast_node_parent = @ast_node | @file +duplicateCode( + unique int id: @duplication, + string relativePath: string ref, + int equivClass: int ref +); + +similarCode( + unique int id: @similarity, + string relativePath: string ref, + int equivClass: int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id: @duplication_or_similarity ref, + int offset: int ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); +