From d35a46e2f33a204e2f66f946a8a9a725ba6564ec Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Fri, 26 Nov 2021 15:04:05 -0500 Subject: [PATCH 1/2] Always extract an empty interface type --- extractor/extractor.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/extractor/extractor.go b/extractor/extractor.go index e90bfede7e1..d4cedcbc5dd 100644 --- a/extractor/extractor.go +++ b/extractor/extractor.go @@ -352,6 +352,9 @@ func extractUniverseScope() { lbl := tw.Labeler.ScopeID(types.Universe, nil) dbscheme.ScopesTable.Emit(tw, lbl, dbscheme.UniverseScopeType.Index()) extractObjects(tw, types.Universe, lbl) + + // Always extract an empty interface type + extractType(tw, types.NewInterfaceType([]*types.Func{}, []types.Type{})) } // extractObjects extracts all objects declared in the given scope From f9a3832aa275ee416a15c255213bfb429207fb7f Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Fri, 26 Nov 2021 15:12:39 -0500 Subject: [PATCH 2/2] Add extractor test that empty interface type exists --- ql/test/extractor-tests/empty-interface/tst.expected | 1 + ql/test/extractor-tests/empty-interface/tst.go | 9 +++++++++ ql/test/extractor-tests/empty-interface/tst.ql | 4 ++++ 3 files changed, 14 insertions(+) create mode 100644 ql/test/extractor-tests/empty-interface/tst.expected create mode 100644 ql/test/extractor-tests/empty-interface/tst.go create mode 100644 ql/test/extractor-tests/empty-interface/tst.ql diff --git a/ql/test/extractor-tests/empty-interface/tst.expected b/ql/test/extractor-tests/empty-interface/tst.expected new file mode 100644 index 00000000000..cb2f8ad3b31 --- /dev/null +++ b/ql/test/extractor-tests/empty-interface/tst.expected @@ -0,0 +1 @@ +| success | diff --git a/ql/test/extractor-tests/empty-interface/tst.go b/ql/test/extractor-tests/empty-interface/tst.go new file mode 100644 index 00000000000..e5d8097fae4 --- /dev/null +++ b/ql/test/extractor-tests/empty-interface/tst.go @@ -0,0 +1,9 @@ +package main + +// This file tests that the extractor does not crash on files that do not +// end in a newline, so it is important not to autoformat this file. + +// autoformat-ignore + +func main() { +} \ No newline at end of file diff --git a/ql/test/extractor-tests/empty-interface/tst.ql b/ql/test/extractor-tests/empty-interface/tst.ql new file mode 100644 index 00000000000..4cd2d43d823 --- /dev/null +++ b/ql/test/extractor-tests/empty-interface/tst.ql @@ -0,0 +1,4 @@ +import go + +where exists(InterfaceType empty | not empty.hasMethod(_, _)) +select "success"