11/**
22 * Types for messages exchanged during jsonrpc communication with the
33 * the CodeQL query server.
4+ *
5+ * This file exists in the queryserver and in the vscode extension, and
6+ * should be kept in sync between them.
7+ *
8+ * A note about the namespaces below, which look like they are
9+ * essentially enums, namely Severity, ResultColumnKind, and
10+ * QueryResultType. By design, for the sake of extensibility, clients
11+ * receiving messages of this protocol are supposed to accept any
12+ * number for any of these types. We commit to the given meaning of
13+ * the numbers listed in constants in the namespaces, and we commit to
14+ * the fact that any unknown QueryResultType value counts as an error.
415 */
516
617import * as rpc from 'vscode-jsonrpc' ;
@@ -294,10 +305,13 @@ export interface CompilationMessage {
294305 /**
295306 * The severity of the message
296307 */
297- severity : number ;
308+ severity : Severity ;
298309}
310+
311+ export type Severity = number ;
299312/**
300- * Severity of different messages
313+ * Severity of different messages. This namespace is intentionally not
314+ * an enum, see "for the sake of extensibility" comment above.
301315 */
302316export namespace Severity {
303317 /**
@@ -333,16 +347,18 @@ export interface ResultColumn {
333347 * The kind of the column. See `ResultColumnKind`
334348 * for the current possible meanings
335349 */
336- kind : number ;
350+ kind : ResultColumnKind ;
337351 /**
338352 * The name of the column.
339353 * This may be compiler generated for complex select expressions.
340354 */
341355 name : string ;
342356}
343357
358+ export type ResultColumnKind = number ;
344359/**
345- * The kind of a result column.
360+ * The kind of a result column. This namespace is intentionally not an enum, see "for the sake of
361+ * extensibility" comment above.
346362 */
347363export namespace ResultColumnKind {
348364 /**
@@ -748,7 +764,7 @@ export interface EvaluationResult {
748764 * The type of the result. See QueryResultType for
749765 * possible meanings. Any other result should be interpreted as an error.
750766 */
751- resultType : number ;
767+ resultType : QueryResultType ;
752768 /**
753769 * The wall clock time it took to evaluate the query.
754770 * The time is from when we initially tried to evaluate the query
@@ -762,8 +778,10 @@ export interface EvaluationResult {
762778 message ?: string ;
763779}
764780
781+ export type QueryResultType = number ;
765782/**
766- * The result of running a query,
783+ * The result of running a query. This namespace is intentionally not
784+ * an enum, see "for the sake of extensibility" comment above.
767785 */
768786export namespace QueryResultType {
769787 /**
@@ -818,7 +836,7 @@ export interface RunUpgradeResult {
818836 * The type of the result. See QueryResultType for
819837 * possible meanings. Any other result should be interpreted as an error.
820838 */
821- resultType : number ;
839+ resultType : QueryResultType ;
822840 /**
823841 * The error message if an error occurred
824842 */
0 commit comments