From f157f1f3593b5b1dd85b6403f5c80deb58909291 Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Wed, 12 May 2021 20:52:21 +0200 Subject: [PATCH] Fix superclass of Class --- ql/src/codeql_ruby/ast/internal/Module.qll | 8 ++++---- ql/test/library-tests/modules/ancestors.expected | 2 +- ql/test/library-tests/modules/modules.expected | 2 +- ql/test/library-tests/modules/superclasses.expected | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ql/src/codeql_ruby/ast/internal/Module.qll b/ql/src/codeql_ruby/ast/internal/Module.qll index 77810868921..e9743b036b8 100644 --- a/ql/src/codeql_ruby/ast/internal/Module.qll +++ b/ql/src/codeql_ruby/ast/internal/Module.qll @@ -45,15 +45,15 @@ private module Cached { Module getSuperClass(Module cls) { cls = TResolved("Object") and result = TResolved("BasicObject") or - cls = - TResolved([ - "Module", "Class", "Numeric", "Array", "Hash", "FalseClass", "TrueClass", "NilClass" - ]) and + cls = TResolved(["Module", "Numeric", "Array", "Hash", "FalseClass", "TrueClass", "NilClass"]) and result = TResolved("Object") or cls = TResolved(["Integer", "Float", "Rational", "Complex"]) and result = TResolved("Numeric") or + cls = TResolved("Class") and + result = TResolved("Module") + or not cls = TResolved(builtin()) and ( exists(ClassDeclaration d | diff --git a/ql/test/library-tests/modules/ancestors.expected b/ql/test/library-tests/modules/ancestors.expected index 6f31d46f3cd..c3f801dd27f 100644 --- a/ql/test/library-tests/modules/ancestors.expected +++ b/ql/test/library-tests/modules/ancestors.expected @@ -8,7 +8,7 @@ #-----| BasicObject #-----| Class -#-----| super -> Object +#-----| super -> Module #-----| Complex #-----| super -> Numeric diff --git a/ql/test/library-tests/modules/modules.expected b/ql/test/library-tests/modules/modules.expected index e9204b88f2a..6e7b66d7b81 100644 --- a/ql/test/library-tests/modules/modules.expected +++ b/ql/test/library-tests/modules/modules.expected @@ -97,7 +97,7 @@ getSuperClass | calls.rb:29:1:44:3 | C | file://:0:0:0:0 | Object | | calls.rb:51:1:55:3 | D | calls.rb:29:1:44:3 | C | | file://:0:0:0:0 | Array | file://:0:0:0:0 | Object | -| file://:0:0:0:0 | Class | file://:0:0:0:0 | Object | +| file://:0:0:0:0 | Class | file://:0:0:0:0 | Module | | file://:0:0:0:0 | Complex | file://:0:0:0:0 | Numeric | | file://:0:0:0:0 | FalseClass | file://:0:0:0:0 | Object | | file://:0:0:0:0 | Float | file://:0:0:0:0 | Numeric | diff --git a/ql/test/library-tests/modules/superclasses.expected b/ql/test/library-tests/modules/superclasses.expected index f9a71b2030c..b4842a16220 100644 --- a/ql/test/library-tests/modules/superclasses.expected +++ b/ql/test/library-tests/modules/superclasses.expected @@ -7,7 +7,7 @@ #-----| BasicObject #-----| Class -#-----| -> Object +#-----| -> Module #-----| Complex #-----| -> Numeric