From f58de96bed561119e3d70b9222b684e1bbea4448 Mon Sep 17 00:00:00 2001 From: Richard Dominick <34370238+RichDom2185@users.noreply.github.com> Date: Wed, 13 Aug 2025 22:52:25 +0800 Subject: [PATCH 1/2] Migrate to ESM and enable verbatim module syntax --- tsconfig.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 65519ddab..e9379472a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "module": "commonjs", + "module": "es2022", "declaration": true, "target": "es2020", "lib": ["es2021.string", "es2018", "es2017.object", "dom"], @@ -19,7 +19,8 @@ "resolveJsonModule": true, "noUnusedLocals": true, "incremental": true, - "skipLibCheck": true + "skipLibCheck": true, + "verbatimModuleSyntax": true }, "exclude": [ "src/stdlib/metacircular-interpreter", From d6abff85c4f6443a484ce67996a134f51e02294f Mon Sep 17 00:00:00 2001 From: Richard Dominick <34370238+RichDom2185@users.noreply.github.com> Date: Wed, 13 Aug 2025 22:55:11 +0800 Subject: [PATCH 2/2] Update imports --- src/__tests__/index.ts | 13 ++++--- src/__tests__/scope-refactoring.ts | 5 ++- src/__tests__/stdlib.ts | 2 +- src/alt-langs/mapper.ts | 5 ++- src/constants.ts | 5 ++- .../__tests__/cse-machine-errors.ts | 5 ++- .../__tests__/cse-machine-runtime-context.ts | 8 ++--- .../__tests__/cse-machine-stdlib.ts | 2 +- src/cse-machine/closure.ts | 5 ++- src/cse-machine/continuations.ts | 3 +- src/cse-machine/heap.ts | 2 +- src/cse-machine/instrCreator.ts | 25 +++++++------ src/cse-machine/interpreter.ts | 36 +++++++++---------- src/cse-machine/macro-utils.ts | 2 +- src/cse-machine/patterns.ts | 6 ++-- src/cse-machine/scheme-macros.ts | 20 +++++------ src/cse-machine/types.ts | 5 ++- src/cse-machine/utils.ts | 27 +++++++------- src/errors/errors.ts | 3 +- src/errors/runtimeSourceError.ts | 3 +- src/errors/timeoutErrors.ts | 2 +- src/errors/typeErrors.ts | 11 +++--- src/errors/validityErrors.ts | 3 +- src/finder.ts | 9 +++-- src/index.ts | 5 +-- src/infiniteLoops/__tests__/instrument.ts | 5 ++- src/infiniteLoops/errors.ts | 3 +- src/infiniteLoops/instrument.ts | 3 +- src/modules/errors.ts | 3 +- src/modules/preprocessor/index.ts | 5 ++- src/name-extractor/index.ts | 3 +- src/parser/fullJS/index.ts | 7 ++-- src/parser/fullTS/index.ts | 7 ++-- src/parser/python/index.ts | 7 ++-- src/parser/scheme/index.ts | 6 ++-- src/parser/source/index.ts | 5 ++- src/parser/source/rules/index.ts | 4 +-- src/parser/source/typed/index.ts | 7 ++-- src/parser/utils.ts | 7 ++-- src/runner/fullJSRunner.ts | 6 ++-- src/scope-refactoring.ts | 2 +- src/stdlib/index.ts | 2 +- src/stdlib/list.ts | 4 +-- src/stdlib/misc.ts | 2 +- src/stdlib/object.ts | 2 +- src/stdlib/parser.ts | 3 +- src/stdlib/pylib.ts | 2 +- src/stdlib/stream.ts | 2 +- src/stdlib/vm.prelude.ts | 2 +- src/stepper/__tests__/stepper.ts | 5 ++- src/stepper/converter.ts | 3 +- src/stepper/lib.ts | 3 +- src/stepper/util.ts | 5 ++- src/tracer/__tests__/tracer_debug.ts | 8 ++--- src/tracer/__tests__/tracer_full.ts | 10 +++--- src/tracer/builtins/auxiliary.ts | 4 +-- src/tracer/builtins/index.ts | 6 ++-- src/tracer/builtins/lists.ts | 6 ++-- src/tracer/builtins/misc.ts | 2 +- src/tracer/generator.ts | 32 ++++++++--------- src/tracer/index.ts | 2 +- src/tracer/interface.ts | 2 +- .../nodes/Expression/ArrayExpression.ts | 6 ++-- .../Expression/ArrowFunctionExpression.ts | 6 ++-- .../nodes/Expression/BinaryExpression.ts | 6 ++-- .../nodes/Expression/BlockExpression.ts | 14 ++++---- .../nodes/Expression/ConditionalExpression.ts | 6 ++-- .../nodes/Expression/FunctionApplication.ts | 10 +++--- src/tracer/nodes/Expression/Identifier.ts | 6 ++-- src/tracer/nodes/Expression/Literal.ts | 6 ++-- .../nodes/Expression/LogicalExpression.ts | 6 ++-- .../nodes/Expression/UnaryExpression.ts | 6 ++-- src/tracer/nodes/Program.ts | 13 ++++--- src/tracer/nodes/Statement/BlockStatement.ts | 12 +++---- .../nodes/Statement/ExpressionStatement.ts | 8 ++--- .../nodes/Statement/FunctionDeclaration.ts | 12 +++---- src/tracer/nodes/Statement/IfStatement.ts | 10 +++--- src/tracer/nodes/Statement/ReturnStatement.ts | 8 ++--- .../nodes/Statement/VariableDeclaration.ts | 8 ++--- src/tracer/steppers.ts | 12 +++---- src/transpiler/__tests__/native.ts | 4 +-- src/transpiler/evalContainer.ts | 2 +- src/transpiler/transpiler.ts | 4 +-- src/typeChecker/internalTypeErrors.ts | 9 ++++- src/typeChecker/typeErrorChecker.ts | 17 +++++---- src/typeChecker/utils.ts | 30 ++++++++-------- src/types.ts | 13 ++++--- src/utils/__tests__/rttc.ts | 7 ++-- src/utils/ast/astCreator.ts | 11 +++--- src/utils/ast/astToString.ts | 3 +- src/utils/rttc.ts | 2 +- src/utils/statementSeqTransform.ts | 3 +- src/utils/stringify.ts | 2 +- src/utils/uniqueIds.ts | 2 +- src/validator/__tests__/validator.ts | 6 ++-- src/vm/svml-assembler.ts | 2 +- src/vm/util.ts | 2 +- 97 files changed, 319 insertions(+), 354 deletions(-) diff --git a/src/__tests__/index.ts b/src/__tests__/index.ts index 918ec5d8b..a3ba8220c 100644 --- a/src/__tests__/index.ts +++ b/src/__tests__/index.ts @@ -1,21 +1,20 @@ -import { Position } from 'acorn/dist/acorn' -import { SourceLocation } from 'estree' - +import type { Position } from 'acorn/dist/acorn' +import type { SourceLocation } from 'estree' import { findDeclaration, getScope, runInContext } from '../index' -import { Chapter, Value } from '../types' +import { Chapter, type Value } from '../types' import { stripIndent } from '../utils/formatters' import { createTestContext, - expectParsedError, expectFinishedResult, + expectParsedError, testSuccess } from '../utils/testing' -import { TestOptions } from '../utils/testing/types' import { - evalWithBuiltins, assertFinishedResultValue, + evalWithBuiltins, processTestOptions } from '../utils/testing/misc' +import type { TestOptions } from '../utils/testing/types' const toString = (x: Value) => '' + x diff --git a/src/__tests__/scope-refactoring.ts b/src/__tests__/scope-refactoring.ts index 89f65c15c..501ede5f8 100644 --- a/src/__tests__/scope-refactoring.ts +++ b/src/__tests__/scope-refactoring.ts @@ -1,5 +1,4 @@ -import { Program } from 'estree' - +import type { Program } from 'estree' import { default as createContext } from '../createContext' import { getAllOccurrencesInScope } from '../index' import { looseParse } from '../parser/utils' @@ -11,7 +10,7 @@ import { getScopeHelper, scopeVariables } from '../scope-refactoring' -import { BlockFrame, Chapter } from '../types' +import { type BlockFrame, Chapter } from '../types' /* tslint:disable:max-classes-per-file */ class Target { diff --git a/src/__tests__/stdlib.ts b/src/__tests__/stdlib.ts index 6c7d69c26..daa35708f 100644 --- a/src/__tests__/stdlib.ts +++ b/src/__tests__/stdlib.ts @@ -1,4 +1,4 @@ -import { Chapter, Value } from '../types' +import { Chapter, type Value } from '../types' import { stripIndent } from '../utils/formatters' import { expectFinishedResult, snapshotFailure } from '../utils/testing' diff --git a/src/alt-langs/mapper.ts b/src/alt-langs/mapper.ts index ed07063d9..7460f788d 100644 --- a/src/alt-langs/mapper.ts +++ b/src/alt-langs/mapper.ts @@ -3,8 +3,7 @@ * If required, maps the final result produced by js-slang to * the required representation for the language. */ - -import { Context, Result } from ".." +import type { Context, Result } from ".." import { Chapter } from "../types" import { mapErrorToScheme, mapResultToScheme } from "./scheme/scheme-mapper" @@ -47,4 +46,4 @@ export const isSchemeLanguage = (context: Context) => context.chapter === Chapter.SCHEME_2 || context.chapter === Chapter.SCHEME_3 || context.chapter === Chapter.SCHEME_4 || - context.chapter === Chapter.FULL_SCHEME \ No newline at end of file + context.chapter === Chapter.FULL_SCHEME diff --git a/src/constants.ts b/src/constants.ts index 00d6e3ed5..b0811c020 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -1,7 +1,6 @@ import * as es from 'estree' - -import { AcornOptions } from './parser/types' -import { Chapter, Language, Variant } from './types' +import type { AcornOptions } from './parser/types' +import { Chapter, type Language, Variant } from './types' export const DEFAULT_ECMA_VERSION = 6 export const ACORN_PARSE_OPTIONS: AcornOptions = { ecmaVersion: DEFAULT_ECMA_VERSION } diff --git a/src/cse-machine/__tests__/cse-machine-errors.ts b/src/cse-machine/__tests__/cse-machine-errors.ts index 25eeff396..cd30969b4 100644 --- a/src/cse-machine/__tests__/cse-machine-errors.ts +++ b/src/cse-machine/__tests__/cse-machine-errors.ts @@ -1,10 +1,9 @@ /* tslint:disable:max-line-length */ import * as _ from 'lodash' - import { Chapter, Variant } from '../../types' import { stripIndent } from '../../utils/formatters' -import { expectParsedError, expectFinishedResult, testFailure } from '../../utils/testing' -import { TestOptions } from '../../utils/testing/types' +import { expectFinishedResult, expectParsedError, testFailure } from '../../utils/testing' +import type { TestOptions } from '../../utils/testing/types' jest.spyOn(_, 'memoize').mockImplementation(func => func as any) diff --git a/src/cse-machine/__tests__/cse-machine-runtime-context.ts b/src/cse-machine/__tests__/cse-machine-runtime-context.ts index 5a65ceeb8..b9ae3f29e 100644 --- a/src/cse-machine/__tests__/cse-machine-runtime-context.ts +++ b/src/cse-machine/__tests__/cse-machine-runtime-context.ts @@ -1,11 +1,11 @@ import * as es from 'estree' -import { IOptions } from '../..' -import { mockContext } from '../../utils/testing/mocks' +import type { IOptions } from '../..' import { parse } from '../../parser/parser' import { runCodeInSource } from '../../runner' -import { Chapter, RecursivePartial } from '../../types' +import { Chapter, type RecursivePartial } from '../../types' import { stripIndent } from '../../utils/formatters' -import { Control, Transformers, Stash, generateCSEMachineStateStream } from '../interpreter' +import { mockContext } from '../../utils/testing/mocks' +import { Control, Stash, Transformers, generateCSEMachineStateStream } from '../interpreter' const getContextFrom = async (code: string, steps?: number) => { const context = mockContext(Chapter.SOURCE_4) diff --git a/src/cse-machine/__tests__/cse-machine-stdlib.ts b/src/cse-machine/__tests__/cse-machine-stdlib.ts index 4d04e9f07..fd352e3e7 100644 --- a/src/cse-machine/__tests__/cse-machine-stdlib.ts +++ b/src/cse-machine/__tests__/cse-machine-stdlib.ts @@ -1,4 +1,4 @@ -import { Chapter, Value, Variant } from '../../types' +import { Chapter, type Value, Variant } from '../../types' import { stripIndent } from '../../utils/formatters' import { expectFinishedResult, snapshotFailure } from '../../utils/testing' diff --git a/src/cse-machine/closure.ts b/src/cse-machine/closure.ts index 7b57faf29..9f94469eb 100644 --- a/src/cse-machine/closure.ts +++ b/src/cse-machine/closure.ts @@ -1,6 +1,5 @@ import { generate } from 'astring' import * as es from 'estree' - import { currentEnvironment, currentTransformers, @@ -9,10 +8,10 @@ import { isStatementSequence, uniqueId } from '../cse-machine/utils' -import { Context, Environment, StatementSequence, Value } from '../types' +import type { Context, Environment, StatementSequence, Value } from '../types' import * as ast from '../utils/ast/astCreator' -import { Control, Transformers, Stash, generateCSEMachineStateStream } from './interpreter' import { envInstr } from './instrCreator' +import { Control, Stash, Transformers, generateCSEMachineStateStream } from './interpreter' const closureToJS = (value: Closure, context: Context) => { function DummyClass(this: Closure) { diff --git a/src/cse-machine/continuations.ts b/src/cse-machine/continuations.ts index 09b06d7fd..45346cafc 100644 --- a/src/cse-machine/continuations.ts +++ b/src/cse-machine/continuations.ts @@ -1,6 +1,5 @@ import * as es from 'estree' - -import { Context, Environment } from '../types' +import type { Context, Environment } from '../types' import { Control, Stash, Transformers } from './interpreter' import { uniqueId } from './utils' diff --git a/src/cse-machine/heap.ts b/src/cse-machine/heap.ts index 09b4887ec..5b55e3bc1 100644 --- a/src/cse-machine/heap.ts +++ b/src/cse-machine/heap.ts @@ -1,4 +1,4 @@ -import { HeapObject } from './types' +import type { HeapObject } from './types' /** * The heap stores all objects in each environment. diff --git a/src/cse-machine/instrCreator.ts b/src/cse-machine/instrCreator.ts index 8dae96807..13233e57b 100644 --- a/src/cse-machine/instrCreator.ts +++ b/src/cse-machine/instrCreator.ts @@ -3,22 +3,21 @@ */ import * as es from 'estree' - -import { Environment, Node } from '../types' +import type { Environment, Node } from '../types' +import { Transformers } from './interpreter' import { - AppInstr, - ArrLitInstr, - AssmtInstr, - BinOpInstr, - BranchInstr, - EnvInstr, - ForInstr, - Instr, + type AppInstr, + type ArrLitInstr, + type AssmtInstr, + type BinOpInstr, + type BranchInstr, + type EnvInstr, + type ForInstr, + type Instr, InstrType, - UnOpInstr, - WhileInstr + type UnOpInstr, + type WhileInstr } from './types' -import { Transformers } from './interpreter' export const resetInstr = (srcNode: Node): Instr => ({ instrType: InstrType.RESET, diff --git a/src/cse-machine/interpreter.ts b/src/cse-machine/interpreter.ts index 05596e048..7d9be471d 100644 --- a/src/cse-machine/interpreter.ts +++ b/src/cse-machine/interpreter.ts @@ -9,19 +9,19 @@ import * as es from 'estree' import { isArray } from 'lodash' -import { IOptions } from '..' +import type { IOptions } from '..' +import { isSchemeLanguage } from '../alt-langs/mapper' import { UNKNOWN_LOCATION } from '../constants' import * as errors from '../errors/errors' import { RuntimeSourceError } from '../errors/runtimeSourceError' import { checkEditorBreakpoints } from '../stdlib/inspector' -import { Context, ContiguousArrayElements, Result, Value, type StatementSequence } from '../types' +import type { Context, ContiguousArrayElements, Result, StatementSequence, Value } from '../types' import * as ast from '../utils/ast/astCreator' import { filterImportDeclarations } from '../utils/ast/helpers' import { evaluateBinaryExpression, evaluateUnaryExpression } from '../utils/operators' import * as rttc from '../utils/rttc' import * as seq from '../utils/statementSeqTransform' import { checkProgramForUndefinedVariables } from '../validator/validator' -import { isSchemeLanguage } from '../alt-langs/mapper' import Closure from './closure' import { Continuation, @@ -29,23 +29,26 @@ import { makeDummyContCallExpression } from './continuations' import * as instr from './instrCreator' +import { flattenList, isList } from './macro-utils' +import { Transformer } from './patterns' +import { isApply, isEval, schemeEval } from './scheme-macros' import { Stack } from './stack' import { - AppInstr, - ArrLitInstr, - AssmtInstr, - BinOpInstr, - BranchInstr, + type AppInstr, + type ArrLitInstr, + type AssmtInstr, + type BinOpInstr, + type BranchInstr, CSEBreak, - ControlItem, + type ControlItem, CseError, - EnvInstr, - ForInstr, - Instr, + type EnvInstr, + type ForInstr, + type Instr, InstrType, - UnOpInstr, - WhileInstr, - SpreadInstr + type SpreadInstr, + type UnOpInstr, + type WhileInstr } from './types' import { checkNumberOfArguments, @@ -81,9 +84,6 @@ import { setVariable, valueProducing } from './utils' -import { isApply, isEval, schemeEval } from './scheme-macros' -import { Transformer } from './patterns' -import { flattenList, isList } from './macro-utils' type CmdEvaluator = ( command: ControlItem, diff --git a/src/cse-machine/macro-utils.ts b/src/cse-machine/macro-utils.ts index 195399f09..50e7c4fe6 100644 --- a/src/cse-machine/macro-utils.ts +++ b/src/cse-machine/macro-utils.ts @@ -1,4 +1,4 @@ -import { List, Pair } from '../stdlib/list' +import type { List, Pair } from '../stdlib/list' /** * Low-level check for a list. diff --git a/src/cse-machine/patterns.ts b/src/cse-machine/patterns.ts index 453a8c43d..357370b5a 100644 --- a/src/cse-machine/patterns.ts +++ b/src/cse-machine/patterns.ts @@ -3,17 +3,17 @@ // it consists of a set of literals used as additional syntax, // a pattern (for a list to match against) // and a final template (for the list to be transformed into). -import { List, Pair } from '../stdlib/list' import { _Symbol } from '../alt-langs/scheme/scm-slang/src/stdlib/base' import { atomic_equals, is_number } from '../alt-langs/scheme/scm-slang/src/stdlib/core-math' +import type { List, Pair } from '../stdlib/list' import { arrayToImproperList, arrayToList, flattenList, improperListLength, isImproperList, - isPair, - isList + isList, + isPair } from './macro-utils' // a single pattern stored within the patterns component diff --git a/src/cse-machine/scheme-macros.ts b/src/cse-machine/scheme-macros.ts index d252182bf..094b3ffd1 100644 --- a/src/cse-machine/scheme-macros.ts +++ b/src/cse-machine/scheme-macros.ts @@ -1,23 +1,23 @@ import * as es from 'estree' -import * as errors from '../errors/errors' -import { List } from '../stdlib/list' -import { _Symbol } from '../alt-langs/scheme/scm-slang/src/stdlib/base' -import { is_number, SchemeNumber } from '../alt-langs/scheme/scm-slang/src/stdlib/core-math' -import { Context } from '..' +import type { Context } from '..' import { encode } from '../alt-langs/scheme/scm-slang/src' +import { _Symbol } from '../alt-langs/scheme/scm-slang/src/stdlib/base' +import { is_number, type SchemeNumber } from '../alt-langs/scheme/scm-slang/src/stdlib/core-math' +import * as errors from '../errors/errors' +import type { List } from '../stdlib/list' +import { popInstr } from './instrCreator' import { Control, Stash } from './interpreter' -import { currentTransformers, getVariable, handleRuntimeError } from './utils' -import { Transformer, macro_transform, match } from './patterns' import { arrayToImproperList, arrayToList, flattenImproperList, - isImproperList, flattenList, + isImproperList, isList } from './macro-utils' -import { ControlItem } from './types' -import { popInstr } from './instrCreator' +import { Transformer, macro_transform, match } from './patterns' +import type { ControlItem } from './types' +import { currentTransformers, getVariable, handleRuntimeError } from './utils' // this needs to be better but for now it's fine export type SchemeControlItems = List | _Symbol | SchemeNumber | boolean | string diff --git a/src/cse-machine/types.ts b/src/cse-machine/types.ts index 63b6136f2..b553c4d52 100644 --- a/src/cse-machine/types.ts +++ b/src/cse-machine/types.ts @@ -1,9 +1,8 @@ import * as es from 'estree' - -import { Environment, Node } from '../types' +import type { Environment, Node } from '../types' import Closure from './closure' -import { SchemeControlItems } from './scheme-macros' import { Transformers } from './interpreter' +import type { SchemeControlItems } from './scheme-macros' export enum InstrType { RESET = 'Reset', diff --git a/src/cse-machine/utils.ts b/src/cse-machine/utils.ts index a1407f885..8b608275a 100644 --- a/src/cse-machine/utils.ts +++ b/src/cse-machine/utils.ts @@ -1,29 +1,28 @@ import * as es from 'estree' import { isArray, isFunction } from 'lodash' - -import { Context } from '..' +import type { Context } from '..' +import { _Symbol } from '../alt-langs/scheme/scm-slang/src/stdlib/base' +import { is_number } from '../alt-langs/scheme/scm-slang/src/stdlib/core-math' import * as errors from '../errors/errors' import { RuntimeSourceError } from '../errors/runtimeSourceError' import { Chapter, type Environment, type Node, type StatementSequence, type Value } from '../types' import * as ast from '../utils/ast/astCreator' -import { _Symbol } from '../alt-langs/scheme/scm-slang/src/stdlib/base' -import { is_number } from '../alt-langs/scheme/scm-slang/src/stdlib/core-math' +import Closure from './closure' +import { Continuation, isCallWithCurrentContinuation } from './continuations' import Heap from './heap' import * as instr from './instrCreator' import { Control, Transformers } from './interpreter' +import { isApply, isEval } from './scheme-macros' import { - AppInstr, - EnvArray, - ControlItem, - Instr, InstrType, - BranchInstr, - WhileInstr, - ForInstr + type AppInstr, + type BranchInstr, + type ControlItem, + type EnvArray, + type ForInstr, + type Instr, + type WhileInstr } from './types' -import Closure from './closure' -import { Continuation, isCallWithCurrentContinuation } from './continuations' -import { isApply, isEval } from './scheme-macros' /** * Typeguard for commands to check if they are scheme values. diff --git a/src/errors/errors.ts b/src/errors/errors.ts index 4dfba2769..5a260e5ea 100644 --- a/src/errors/errors.ts +++ b/src/errors/errors.ts @@ -2,9 +2,8 @@ /* tslint:disable:max-line-length */ import { baseGenerator, generate } from 'astring' import * as es from 'estree' - import { UNKNOWN_LOCATION } from '../constants' -import { ErrorSeverity, ErrorType, Node, SourceError, Value } from '../types' +import { ErrorSeverity, ErrorType, type Node, type SourceError, type Value } from '../types' import { stringify } from '../utils/stringify' import { RuntimeSourceError } from './runtimeSourceError' diff --git a/src/errors/runtimeSourceError.ts b/src/errors/runtimeSourceError.ts index 9bccc77f1..ec720ed81 100644 --- a/src/errors/runtimeSourceError.ts +++ b/src/errors/runtimeSourceError.ts @@ -1,7 +1,6 @@ import * as es from 'estree' - import { UNKNOWN_LOCATION } from '../constants' -import { ErrorSeverity, ErrorType, Node, SourceError } from '../types' +import { ErrorSeverity, ErrorType, type Node, type SourceError } from '../types' export class RuntimeSourceError implements SourceError { public type = ErrorType.RUNTIME diff --git a/src/errors/timeoutErrors.ts b/src/errors/timeoutErrors.ts index 0b1c0d5b0..0f59b73f5 100644 --- a/src/errors/timeoutErrors.ts +++ b/src/errors/timeoutErrors.ts @@ -1,6 +1,6 @@ /* tslint:disable:max-classes-per-file */ import { JSSLANG_PROPERTIES } from '../constants' -import { ErrorSeverity, ErrorType, Node } from '../types' +import { ErrorSeverity, ErrorType, type Node } from '../types' import { stripIndent } from '../utils/formatters' import { stringify } from '../utils/stringify' import { RuntimeSourceError } from './runtimeSourceError' diff --git a/src/errors/typeErrors.ts b/src/errors/typeErrors.ts index 68f59cd99..e0054e075 100644 --- a/src/errors/typeErrors.ts +++ b/src/errors/typeErrors.ts @@ -1,16 +1,15 @@ import { generate } from 'astring' import * as es from 'estree' - import { UNKNOWN_LOCATION } from '../constants' import * as tsEs from '../typeChecker/tsESTree' import { ErrorSeverity, ErrorType, - Node, - NodeWithInferredType, - SArray, - SourceError, - Type + type Node, + type NodeWithInferredType, + type SArray, + type SourceError, + type Type } from '../types' import { simplify, stripIndent } from '../utils/formatters' import { typeToString } from '../utils/stringify' diff --git a/src/errors/validityErrors.ts b/src/errors/validityErrors.ts index c1fe35f53..fa947cff3 100644 --- a/src/errors/validityErrors.ts +++ b/src/errors/validityErrors.ts @@ -1,7 +1,6 @@ import * as es from 'estree' - import { UNKNOWN_LOCATION } from '../constants' -import { ErrorSeverity, ErrorType, SourceError } from '../types' +import { ErrorSeverity, ErrorType, type SourceError } from '../types' export class NoAssignmentToForVariable implements SourceError { public type = ErrorType.SYNTAX diff --git a/src/finder.ts b/src/finder.ts index 4a3b9b6fc..ef3d081ac 100644 --- a/src/finder.ts +++ b/src/finder.ts @@ -1,4 +1,4 @@ -import { +import type { ArrowFunctionExpression, BlockStatement, ForStatement, @@ -8,15 +8,14 @@ import { SourceLocation, VariableDeclarator } from 'estree' - -import { Context, Node } from './types' +import type { Context, Node } from './types' import { ancestor, base, findNodeAt, - FullWalkerCallback, + type FullWalkerCallback, recursive, - WalkerCallback + type WalkerCallback } from './utils/walkers' // Finds the innermost node that matches the given location diff --git a/src/index.ts b/src/index.ts index 503093ebc..e90939a1c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -10,12 +10,12 @@ import { setBreakpointAtLine } from './stdlib/inspector' import { Chapter, type Context, - type Error as ResultError, type ExecutionMethod, type Finished, type ModuleContext, type RecursivePartial, type Result, + type Error as ResultError, type SourceError, type SVMProgram, type Variant @@ -309,4 +309,5 @@ export async function compileFiles( } } -export { createContext, Context, ModuleContext, Result, setBreakpointAtLine, assemble } +export { assemble, createContext, setBreakpointAtLine } +export type { Context, ModuleContext, Result } diff --git a/src/infiniteLoops/__tests__/instrument.ts b/src/infiniteLoops/__tests__/instrument.ts index e292ef2a0..fe11715f4 100644 --- a/src/infiniteLoops/__tests__/instrument.ts +++ b/src/infiniteLoops/__tests__/instrument.ts @@ -1,9 +1,8 @@ -import { Program } from 'estree' - -import { mockContext } from '../../utils/testing/mocks' +import type { Program } from 'estree' import { parse } from '../../parser/parser' import { Chapter } from '../../types' import { evaluateBinaryExpression, evaluateUnaryExpression } from '../../utils/operators' +import { mockContext } from '../../utils/testing/mocks' import { InfiniteLoopRuntimeFunctions as functionNames, InfiniteLoopRuntimeObjectNames, diff --git a/src/infiniteLoops/errors.ts b/src/infiniteLoops/errors.ts index 3c86be2d7..b77a82b99 100644 --- a/src/infiniteLoops/errors.ts +++ b/src/infiniteLoops/errors.ts @@ -1,6 +1,5 @@ import * as es from 'estree' - -import { Context } from '..' +import type { Context } from '..' import { ExceptionError } from '../errors/errors' import { RuntimeSourceError } from '../errors/runtimeSourceError' import { TimeoutError } from '../errors/timeoutErrors' diff --git a/src/infiniteLoops/instrument.ts b/src/infiniteLoops/instrument.ts index d5e47e194..001fae4a5 100644 --- a/src/infiniteLoops/instrument.ts +++ b/src/infiniteLoops/instrument.ts @@ -1,12 +1,11 @@ import { generate } from 'astring' import type es from 'estree' - import { transformImportDeclarations } from '../transpiler/transpiler' import type { Node } from '../types' import * as create from '../utils/ast/astCreator' import { getIdsFromDeclaration } from '../utils/ast/helpers' import { objectValues } from '../utils/misc' -import { recursive, simple, WalkerCallback } from '../utils/walkers' +import { recursive, simple, type WalkerCallback } from '../utils/walkers' // transforms AST of program const globalIds = { diff --git a/src/modules/errors.ts b/src/modules/errors.ts index 60e538280..5296405ad 100644 --- a/src/modules/errors.ts +++ b/src/modules/errors.ts @@ -1,8 +1,7 @@ import type es from 'estree' - import { UNKNOWN_LOCATION } from '../constants' import { RuntimeSourceError } from '../errors/runtimeSourceError' -import { ErrorSeverity, ErrorType, Node, SourceError } from '../types' +import { ErrorSeverity, ErrorType, type Node, type SourceError } from '../types' import { nonAlphanumericCharEncoding } from './preprocessor/filePaths' export class ModuleInternalError extends RuntimeSourceError { diff --git a/src/modules/preprocessor/index.ts b/src/modules/preprocessor/index.ts index 3f7e85b06..a9f859c66 100644 --- a/src/modules/preprocessor/index.ts +++ b/src/modules/preprocessor/index.ts @@ -1,13 +1,12 @@ import type es from 'estree' // import * as TypedES from '../../typeChecker/tsESTree' - import type { Context, IOptions } from '../..' -import { RecursivePartial, Variant } from '../../types' +import { type RecursivePartial, Variant } from '../../types' import loadSourceModules, { loadSourceModuleTypes } from '../loader' import type { FileGetter } from '../moduleTypes' import analyzeImportsAndExports from './analyzer' -import parseProgramsAndConstructImportGraph from './linker' import defaultBundler, { type Bundler } from './bundler' +import parseProgramsAndConstructImportGraph from './linker' export type PreprocessResult = | { diff --git a/src/name-extractor/index.ts b/src/name-extractor/index.ts index 46cef818e..702d0137f 100644 --- a/src/name-extractor/index.ts +++ b/src/name-extractor/index.ts @@ -1,6 +1,5 @@ import acorn from 'acorn' import type es from 'estree' - import { partition } from 'lodash' import type { Context } from '../' import { UNKNOWN_LOCATION } from '../constants' @@ -9,6 +8,7 @@ import { memoizedGetModuleDocsAsync, memoizedGetModuleManifestAsync } from '../m import type { ModuleDocsEntry } from '../modules/moduleTypes' import { isSourceModule } from '../modules/utils' import syntaxBlacklist from '../parser/source/syntax' +import type { Node } from '../types' import { getImportedName, getModuleDeclarationSource } from '../utils/ast/helpers' import { isDeclaration, isImportDeclaration, isNamespaceSpecifier } from '../utils/ast/typeGuards' @@ -20,7 +20,6 @@ export enum DeclarationKind { KIND_CONST = 'const', KIND_KEYWORD = 'keyword' } -import { Node } from '../types' export interface NameDeclaration { name: string diff --git a/src/parser/fullJS/index.ts b/src/parser/fullJS/index.ts index 575e0e624..2111198ae 100644 --- a/src/parser/fullJS/index.ts +++ b/src/parser/fullJS/index.ts @@ -1,9 +1,8 @@ import { parse } from 'acorn' -import { Program } from 'estree' - -import { Context } from '../..' +import type { Program } from 'estree' +import type { Context } from '../..' import { FatalSyntaxError } from '../errors' -import { AcornOptions, Parser } from '../types' +import type { AcornOptions, Parser } from '../types' import { positionToSourceLocation } from '../utils' export class FullJSParser implements Parser { diff --git a/src/parser/fullTS/index.ts b/src/parser/fullTS/index.ts index 9149c33c5..e4d2624c9 100644 --- a/src/parser/fullTS/index.ts +++ b/src/parser/fullTS/index.ts @@ -1,13 +1,12 @@ import { parse as babelParse } from '@babel/parser' import { createProjectSync, ts } from '@ts-morph/bootstrap' -import { Program } from 'estree' - -import { Context } from '../..' +import type { Program } from 'estree' +import type { Context } from '../..' import * as TypedES from '../../typeChecker/tsESTree' import { removeTSNodes } from '../../typeChecker/typeErrorChecker' import { FatalSyntaxError } from '../errors' import { transformBabelASTToESTreeCompliantAST } from '../source/typed/utils' -import { AcornOptions, Parser } from '../types' +import type { AcornOptions, Parser } from '../types' import { defaultBabelOptions, positionToSourceLocation } from '../utils' const IMPORT_TOP_LEVEL_ERROR = diff --git a/src/parser/python/index.ts b/src/parser/python/index.ts index a72e2ff36..3f6221b4d 100644 --- a/src/parser/python/index.ts +++ b/src/parser/python/index.ts @@ -1,9 +1,8 @@ -import { Program } from 'estree' - +import type { Program } from 'estree' import { parsePythonToEstreeAst } from '../../py-slang/src' -import { Chapter, Context } from '../../types' +import { Chapter, type Context } from '../../types' import { FatalSyntaxError } from '../errors' -import { AcornOptions, Parser } from '../types' +import type { AcornOptions, Parser } from '../types' import { positionToSourceLocation } from '../utils' export class PythonParser implements Parser { diff --git a/src/parser/scheme/index.ts b/src/parser/scheme/index.ts index 30df2b836..d2ea0e772 100644 --- a/src/parser/scheme/index.ts +++ b/src/parser/scheme/index.ts @@ -1,8 +1,8 @@ -import { Program } from 'estree' +import type { Program } from 'estree' import { schemeParse } from '../../alt-langs/scheme/scm-slang/src' -import { Chapter, Context } from '../../types' +import { Chapter, type Context } from '../../types' import { FatalSyntaxError } from '../errors' -import { AcornOptions, Parser } from '../types' +import type { AcornOptions, Parser } from '../types' import { positionToSourceLocation } from '../utils' export class SchemeParser implements Parser { diff --git a/src/parser/source/index.ts b/src/parser/source/index.ts index 0e1e1857e..4db8dc077 100644 --- a/src/parser/source/index.ts +++ b/src/parser/source/index.ts @@ -1,11 +1,10 @@ import { parse as acornParse, type Token, tokenizer } from 'acorn' import type es from 'estree' - import { DEFAULT_ECMA_VERSION } from '../../constants' import { Chapter, type Context, type Node, type SourceError, Variant } from '../../types' -import { ancestor, AncestorWalkerFn } from '../../utils/walkers' +import { ancestor, type AncestorWalkerFn } from '../../utils/walkers' import { DisallowedConstructError, FatalSyntaxError } from '../errors' -import type { AcornOptions, Rule, Parser } from '../types' +import type { AcornOptions, Parser, Rule } from '../types' import { createAcornParserOptions, positionToSourceLocation } from '../utils' import defaultRules from './rules' import syntaxBlacklist from './syntax' diff --git a/src/parser/source/rules/index.ts b/src/parser/source/rules/index.ts index b60540b82..321f63ed8 100644 --- a/src/parser/source/rules/index.ts +++ b/src/parser/source/rules/index.ts @@ -1,5 +1,5 @@ -import { Node } from '../../../types' -import { Rule } from '../../types' +import type { Node } from '../../../types' +import type { Rule } from '../../types' import bracesAroundFor from './bracesAroundFor' import bracesAroundIfElse from './bracesAroundIfElse' import bracesAroundWhile from './bracesAroundWhile' diff --git a/src/parser/source/typed/index.ts b/src/parser/source/typed/index.ts index 05d5c6e8f..9885c3681 100644 --- a/src/parser/source/typed/index.ts +++ b/src/parser/source/typed/index.ts @@ -1,9 +1,8 @@ import { parse as babelParse } from '@babel/parser' -import { Options as AcornOptions } from 'acorn' -import { Program } from 'estree' - +import type { Options as AcornOptions } from 'acorn' +import type { Program } from 'estree' import { SourceParser } from '..' -import { Context } from '../../..' +import type { Context } from '../../..' import { DEFAULT_ECMA_VERSION } from '../../../constants' import * as TypedES from '../../../typeChecker/tsESTree' import { checkForTypeErrors } from '../../../typeChecker/typeErrorChecker' diff --git a/src/parser/utils.ts b/src/parser/utils.ts index 9db98a521..c29343079 100644 --- a/src/parser/utils.ts +++ b/src/parser/utils.ts @@ -1,14 +1,13 @@ import { - type Comment, - ecmaVersion, - type Node, parse as acornParse, parseExpressionAt as acornParseAt, + type Comment, + type ecmaVersion, + type Node, type Position } from 'acorn' import { parse as acornLooseParse } from 'acorn-loose' import type { Program, SourceLocation } from 'estree' - import type { Context } from '..' import { DEFAULT_ECMA_VERSION } from '../constants' import type { SourceError } from '../types' diff --git a/src/runner/fullJSRunner.ts b/src/runner/fullJSRunner.ts index 8bc2ab034..f62ab8b73 100644 --- a/src/runner/fullJSRunner.ts +++ b/src/runner/fullJSRunner.ts @@ -1,8 +1,6 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ import { generate } from 'astring' import type es from 'estree' -import { RawSourceMap } from 'source-map' - +import type { RawSourceMap } from 'source-map' import { NATIVE_STORAGE_ID } from '../constants' import { RuntimeSourceError } from '../errors/runtimeSourceError' import { parse } from '../parser/parser' @@ -16,8 +14,8 @@ import type { Context, NativeStorage } from '../types' import * as create from '../utils/ast/astCreator' import { getFunctionDeclarationNamesInProgram } from '../utils/uniqueIds' import { toSourceError } from './errors' -import { resolvedErrorPromise } from './utils' import type { Runner } from './types' +import { resolvedErrorPromise } from './utils' function fullJSEval(code: string, nativeStorage: NativeStorage): any { if (nativeStorage.evaller) { diff --git a/src/scope-refactoring.ts b/src/scope-refactoring.ts index b092ea80f..632f878c9 100644 --- a/src/scope-refactoring.ts +++ b/src/scope-refactoring.ts @@ -1,7 +1,7 @@ import * as es from 'estree' import { isInLoc } from './finder' -import { BlockFrame, DefinitionNode, Node } from './types' +import type { BlockFrame, DefinitionNode, Node } from './types' import { simple } from './utils/walkers' /** diff --git a/src/stdlib/index.ts b/src/stdlib/index.ts index 68b3412da..3fa0adec9 100644 --- a/src/stdlib/index.ts +++ b/src/stdlib/index.ts @@ -1,5 +1,5 @@ import createContext from '../createContext' -import { Chapter, Value } from '../types' +import { Chapter, type Value } from '../types' import * as list from './list' import * as misc from './misc' import * as parser from './parser' diff --git a/src/stdlib/list.ts b/src/stdlib/list.ts index 3b917196e..f3532a956 100644 --- a/src/stdlib/list.ts +++ b/src/stdlib/list.ts @@ -1,5 +1,5 @@ -import { Value } from '../types' -import { ArrayLike, stringify } from '../utils/stringify' +import type { Value } from '../types' +import { type ArrayLike, stringify } from '../utils/stringify' // list.ts: Supporting lists in the Scheme style, using pairs made // up of two-element JavaScript array (vector) diff --git a/src/stdlib/misc.ts b/src/stdlib/misc.ts index 312c08070..327aa6194 100644 --- a/src/stdlib/misc.ts +++ b/src/stdlib/misc.ts @@ -1,5 +1,5 @@ import Closure from '../cse-machine/closure' -import { Context, Value } from '../types' +import type { Context, Value } from '../types' import { stringify } from '../utils/stringify' /** diff --git a/src/stdlib/object.ts b/src/stdlib/object.ts index 5d7e09900..afdd7bece 100644 --- a/src/stdlib/object.ts +++ b/src/stdlib/object.ts @@ -1,4 +1,4 @@ -import { Value } from '../types' +import type { Value } from '../types' export function is_instance_of(a: Value, b: Value) { return a instanceof b diff --git a/src/stdlib/parser.ts b/src/stdlib/parser.ts index 69a35a18c..6501f7a9e 100644 --- a/src/stdlib/parser.ts +++ b/src/stdlib/parser.ts @@ -1,9 +1,8 @@ import * as es from 'estree' - import { parse as sourceParse } from '../parser/parser' import { SourceParser } from '../parser/source' import { libraryParserLanguage } from '../parser/source/syntax' -import { Context, ContiguousArrayElements, Node, StatementSequence, Value } from '../types' +import type { Context, ContiguousArrayElements, Node, StatementSequence, Value } from '../types' import { oneLine } from '../utils/formatters' import { vector_to_list } from './list' diff --git a/src/stdlib/pylib.ts b/src/stdlib/pylib.ts index dff35b2f7..cd07a7b23 100644 --- a/src/stdlib/pylib.ts +++ b/src/stdlib/pylib.ts @@ -1,4 +1,4 @@ -import { Value } from '../types' +import type { Value } from '../types' export function is_float(v: Value) { return typeof v === 'number' diff --git a/src/stdlib/stream.ts b/src/stdlib/stream.ts index c21a675fd..b0127408b 100644 --- a/src/stdlib/stream.ts +++ b/src/stdlib/stream.ts @@ -1,7 +1,7 @@ // we need this file for now, because the lazy variants // of Source cannot handle ... yet -import { head, is_null, List, list, Pair, pair, tail } from './list' +import { head, is_null, type List, list, type Pair, pair, tail } from './list' type Stream = null | Pair Stream> diff --git a/src/stdlib/vm.prelude.ts b/src/stdlib/vm.prelude.ts index df4d7097d..9fc447f7f 100644 --- a/src/stdlib/vm.prelude.ts +++ b/src/stdlib/vm.prelude.ts @@ -1,5 +1,5 @@ import OpCodes from '../vm/opcodes' -import { Program, SVMFunction } from '../vm/svml-compiler' +import type { Program, SVMFunction } from '../vm/svml-compiler' import { char_at, get_time, parse_int } from './misc' // functions should be sorted in alphabetical order. Refer to SVML spec on wiki diff --git a/src/stepper/__tests__/stepper.ts b/src/stepper/__tests__/stepper.ts index b4f843897..d15e14af9 100644 --- a/src/stepper/__tests__/stepper.ts +++ b/src/stepper/__tests__/stepper.ts @@ -1,8 +1,7 @@ import type es from 'estree' - -import { mockContext } from '../../utils/testing/mocks' import { parse } from '../../parser/parser' -import { Chapter, Context, substituterNodes } from '../../types' +import { Chapter, type Context, type substituterNodes } from '../../types' +import { mockContext } from '../../utils/testing/mocks' import { codify, getEvaluationSteps } from '../stepper' function getLastStepAsString(steps: [substituterNodes, string[][], string][]): string { diff --git a/src/stepper/converter.ts b/src/stepper/converter.ts index df4feaf6b..a08ed52f1 100644 --- a/src/stepper/converter.ts +++ b/src/stepper/converter.ts @@ -1,7 +1,6 @@ import type es from 'estree' - import { parse } from '../parser/parser' -import { Chapter, Context, substituterNodes } from '../types' +import { Chapter, type Context, type substituterNodes } from '../types' import { mockContext, mockImportDeclaration } from '../utils/testing/mocks' import * as builtin from './lib' import { javascriptify } from './stepper' diff --git a/src/stepper/lib.ts b/src/stepper/lib.ts index 1765cde72..4dda1e1d2 100644 --- a/src/stepper/lib.ts +++ b/src/stepper/lib.ts @@ -1,8 +1,7 @@ import * as es from 'estree' - import { BuiltInFunctionError } from '../errors/errors' import * as misc from '../stdlib/misc' -import { Context, substituterNodes } from '../types' +import type { Context, substituterNodes } from '../types' import * as ast from '../utils/ast/astCreator' import { nodeToValue, nodeToValueWithContext, valueToExpression } from './converter' import { codify } from './stepper' diff --git a/src/stepper/util.ts b/src/stepper/util.ts index db99a5975..e4f32ba54 100644 --- a/src/stepper/util.ts +++ b/src/stepper/util.ts @@ -1,10 +1,9 @@ import * as es from 'estree' - -import { Context } from '..' +import type { Context } from '..' import { UNKNOWN_LOCATION } from '../constants' import * as errors from '../errors/errors' import { RuntimeSourceError } from '../errors/runtimeSourceError' -import { BlockExpression, Environment, Node, substituterNodes, Value } from '../types' +import type { BlockExpression, Environment, Node, substituterNodes, Value } from '../types' import * as builtin from './lib' export function prettyPrintError(error: RuntimeSourceError): string { diff --git a/src/tracer/__tests__/tracer_debug.ts b/src/tracer/__tests__/tracer_debug.ts index 1d1e7227f..407cb5a50 100644 --- a/src/tracer/__tests__/tracer_debug.ts +++ b/src/tracer/__tests__/tracer_debug.ts @@ -1,10 +1,10 @@ import { parse } from 'acorn' import * as astring from 'astring' -import { getSteps } from '../steppers' -import { convert } from '../generator' -import { StepperBaseNode } from '../interface' -import { IStepperPropContents } from '..' +import type { IStepperPropContents } from '..' import createContext from '../../createContext' +import { convert } from '../generator' +import type { StepperBaseNode } from '../interface' +import { getSteps } from '../steppers' const stringify = (ast: StepperBaseNode) => { if (ast === undefined || ast!.type === undefined) { diff --git a/src/tracer/__tests__/tracer_full.ts b/src/tracer/__tests__/tracer_full.ts index 1411c5c6d..7fbd0e0a0 100644 --- a/src/tracer/__tests__/tracer_full.ts +++ b/src/tracer/__tests__/tracer_full.ts @@ -1,14 +1,14 @@ import * as acorn from 'acorn' import * as astring from 'astring' -import { getSteps } from '../steppers' +import createContext from '../../createContext' +import { mockContext } from '../../utils/testing/mocks' import { convert } from '../generator' -import { StepperBaseNode } from '../interface' +import type { StepperBaseNode } from '../interface' +import { StepperArrowFunctionExpression } from '../nodes/Expression/ArrowFunctionExpression' import { StepperProgram } from '../nodes/Program' import { StepperExpressionStatement } from '../nodes/Statement/ExpressionStatement' -import { StepperArrowFunctionExpression } from '../nodes/Expression/ArrowFunctionExpression' import { StepperVariableDeclaration } from '../nodes/Statement/VariableDeclaration' -import createContext from '../../createContext' -import { mockContext } from '../../utils/testing/mocks' +import { getSteps } from '../steppers' function codify(node: StepperBaseNode) { const steps = getSteps(convert(node), createContext(2), { stepLimit: 1000 }) diff --git a/src/tracer/builtins/auxiliary.ts b/src/tracer/builtins/auxiliary.ts index 8c2519684..b3289e090 100644 --- a/src/tracer/builtins/auxiliary.ts +++ b/src/tracer/builtins/auxiliary.ts @@ -1,6 +1,6 @@ import { parse } from 'acorn' -import { ArrowFunctionExpression, ExpressionStatement } from 'estree' -import { StepperExpression } from '../nodes' +import type { ArrowFunctionExpression, ExpressionStatement } from 'estree' +import type { StepperExpression } from '../nodes' import { StepperArrowFunctionExpression } from '../nodes/Expression/ArrowFunctionExpression' import { StepperFunctionApplication } from '../nodes/Expression/FunctionApplication' diff --git a/src/tracer/builtins/index.ts b/src/tracer/builtins/index.ts index d4c1c7f77..2d89af982 100644 --- a/src/tracer/builtins/index.ts +++ b/src/tracer/builtins/index.ts @@ -1,11 +1,11 @@ import * as es from 'estree' -import { StepperExpression } from '../nodes' +import { convert } from '../generator' +import type { StepperExpression } from '../nodes' import { StepperIdentifier } from '../nodes/Expression/Identifier' import { StepperLiteral } from '../nodes/Expression/Literal' -import { convert } from '../generator' +import { auxiliaryBuiltinFunctions } from './auxiliary' import { listBuiltinFunctions } from './lists' import { miscBuiltinFunctions } from './misc' -import { auxiliaryBuiltinFunctions } from './auxiliary' const builtinFunctions = { ...listBuiltinFunctions, diff --git a/src/tracer/builtins/lists.ts b/src/tracer/builtins/lists.ts index d9d7d45af..440dd926d 100644 --- a/src/tracer/builtins/lists.ts +++ b/src/tracer/builtins/lists.ts @@ -1,12 +1,12 @@ import { parse } from 'acorn' -import { ArrowFunctionExpression, ExpressionStatement } from 'estree' -import { StepperExpression } from '../nodes' +import type { ArrowFunctionExpression, ExpressionStatement } from 'estree' +import type { StepperExpression } from '../nodes' import { StepperArrayExpression } from '../nodes/Expression/ArrayExpression' import { StepperArrowFunctionExpression } from '../nodes/Expression/ArrowFunctionExpression' +import { StepperBinaryExpression } from '../nodes/Expression/BinaryExpression' import { StepperFunctionApplication } from '../nodes/Expression/FunctionApplication' import { StepperIdentifier } from '../nodes/Expression/Identifier' import { StepperLiteral } from '../nodes/Expression/Literal' -import { StepperBinaryExpression } from '../nodes/Expression/BinaryExpression' export const listBuiltinFunctions = { pair: { diff --git a/src/tracer/builtins/misc.ts b/src/tracer/builtins/misc.ts index a591dfd56..95bc5a84d 100644 --- a/src/tracer/builtins/misc.ts +++ b/src/tracer/builtins/misc.ts @@ -1,4 +1,4 @@ -import { StepperExpression } from '../nodes' +import type { StepperExpression } from '../nodes' import { StepperArrowFunctionExpression } from '../nodes/Expression/ArrowFunctionExpression' import { StepperIdentifier } from '../nodes/Expression/Identifier' import { StepperLiteral } from '../nodes/Expression/Literal' diff --git a/src/tracer/generator.ts b/src/tracer/generator.ts index fa40f41ff..62209e3ef 100644 --- a/src/tracer/generator.ts +++ b/src/tracer/generator.ts @@ -7,30 +7,30 @@ Every class should have the following properties - static create: factory method to parse estree to StepperAST */ -import * as es from 'estree' import { generate } from 'astring' +import * as es from 'estree' +import { isBuiltinFunction } from './builtins' +import type { StepperBaseNode } from './interface' +import { StepperArrayExpression } from './nodes/Expression/ArrayExpression' +import { StepperArrowFunctionExpression } from './nodes/Expression/ArrowFunctionExpression' import { StepperBinaryExpression } from './nodes/Expression/BinaryExpression' -import { StepperUnaryExpression } from './nodes/Expression/UnaryExpression' +import { StepperBlockExpression } from './nodes/Expression/BlockExpression' +import { StepperConditionalExpression } from './nodes/Expression/ConditionalExpression' +import { StepperFunctionApplication } from './nodes/Expression/FunctionApplication' +import { StepperIdentifier } from './nodes/Expression/Identifier' import { StepperLiteral } from './nodes/Expression/Literal' -import { StepperBaseNode } from './interface' -import { StepperExpressionStatement } from './nodes/Statement/ExpressionStatement' +import { StepperLogicalExpression } from './nodes/Expression/LogicalExpression' +import { StepperUnaryExpression } from './nodes/Expression/UnaryExpression' import { StepperProgram } from './nodes/Program' +import { StepperBlockStatement } from './nodes/Statement/BlockStatement' +import { StepperExpressionStatement } from './nodes/Statement/ExpressionStatement' +import { StepperFunctionDeclaration } from './nodes/Statement/FunctionDeclaration' +import { StepperIfStatement } from './nodes/Statement/IfStatement' +import { StepperReturnStatement } from './nodes/Statement/ReturnStatement' import { StepperVariableDeclaration, StepperVariableDeclarator } from './nodes/Statement/VariableDeclaration' -import { StepperIdentifier } from './nodes/Expression/Identifier' -import { StepperBlockStatement } from './nodes/Statement/BlockStatement' -import { StepperIfStatement } from './nodes/Statement/IfStatement' -import { StepperConditionalExpression } from './nodes/Expression/ConditionalExpression' -import { StepperArrowFunctionExpression } from './nodes/Expression/ArrowFunctionExpression' -import { StepperFunctionApplication } from './nodes/Expression/FunctionApplication' -import { StepperReturnStatement } from './nodes/Statement/ReturnStatement' -import { StepperFunctionDeclaration } from './nodes/Statement/FunctionDeclaration' -import { StepperArrayExpression } from './nodes/Expression/ArrayExpression' -import { StepperLogicalExpression } from './nodes/Expression/LogicalExpression' -import { StepperBlockExpression } from './nodes/Expression/BlockExpression' -import { isBuiltinFunction } from './builtins' const undefinedNode = new StepperLiteral('undefined') const nodeConverters: { [Key: string]: (node: any) => StepperBaseNode } = { diff --git a/src/tracer/index.ts b/src/tracer/index.ts index e0509fa0b..9a840b690 100644 --- a/src/tracer/index.ts +++ b/src/tracer/index.ts @@ -1,4 +1,4 @@ -import { StepperBaseNode } from './interface' +import type { StepperBaseNode } from './interface' export let redex: { preRedex: StepperBaseNode[]; postRedex: StepperBaseNode[] } = { preRedex: [], diff --git a/src/tracer/interface.ts b/src/tracer/interface.ts index 5090df780..6fbf18049 100644 --- a/src/tracer/interface.ts +++ b/src/tracer/interface.ts @@ -1,4 +1,4 @@ -import { StepperExpression, StepperPattern } from './nodes' +import type { StepperExpression, StepperPattern } from './nodes' export interface StepperBaseNode { type: string diff --git a/src/tracer/nodes/Expression/ArrayExpression.ts b/src/tracer/nodes/Expression/ArrayExpression.ts index 43292140c..7a60ed4bd 100644 --- a/src/tracer/nodes/Expression/ArrayExpression.ts +++ b/src/tracer/nodes/Expression/ArrayExpression.ts @@ -1,8 +1,8 @@ -import { ArrayExpression, Comment, SourceLocation } from 'estree' -import { StepperBaseNode } from '../../interface' +import type { ArrayExpression, Comment, SourceLocation } from 'estree' +import type { StepperExpression, StepperPattern } from '..' import { redex } from '../..' -import { StepperExpression, StepperPattern } from '..' import { convert } from '../../generator' +import type { StepperBaseNode } from '../../interface' export class StepperArrayExpression implements ArrayExpression, StepperBaseNode { type: 'ArrayExpression' diff --git a/src/tracer/nodes/Expression/ArrowFunctionExpression.ts b/src/tracer/nodes/Expression/ArrowFunctionExpression.ts index 128eb4d58..7f80e311a 100644 --- a/src/tracer/nodes/Expression/ArrowFunctionExpression.ts +++ b/src/tracer/nodes/Expression/ArrowFunctionExpression.ts @@ -1,7 +1,7 @@ -import { ArrowFunctionExpression, Comment, SourceLocation } from 'estree' -import { StepperBaseNode } from '../../interface' -import { StepperExpression, StepperPattern } from '..' +import type { ArrowFunctionExpression, Comment, SourceLocation } from 'estree' +import type { StepperExpression, StepperPattern } from '..' import { convert } from '../../generator' +import type { StepperBaseNode } from '../../interface' import { getFreshName } from '../../utils' import { StepperBlockStatement } from '../Statement/BlockStatement' diff --git a/src/tracer/nodes/Expression/BinaryExpression.ts b/src/tracer/nodes/Expression/BinaryExpression.ts index 535e5b2e7..781fbefb4 100644 --- a/src/tracer/nodes/Expression/BinaryExpression.ts +++ b/src/tracer/nodes/Expression/BinaryExpression.ts @@ -1,8 +1,8 @@ -import { BinaryExpression, BinaryOperator, Comment, SourceLocation } from 'estree' -import { StepperBaseNode } from '../../interface' +import type { BinaryExpression, BinaryOperator, Comment, SourceLocation } from 'estree' +import type { StepperExpression, StepperPattern } from '..' import { redex } from '../..' -import { StepperExpression, StepperPattern } from '..' import { convert } from '../../generator' +import type { StepperBaseNode } from '../../interface' import { StepperLiteral } from './Literal' export class StepperBinaryExpression implements BinaryExpression, StepperBaseNode { type: 'BinaryExpression' diff --git a/src/tracer/nodes/Expression/BlockExpression.ts b/src/tracer/nodes/Expression/BlockExpression.ts index 31f273dbe..020e1ac4b 100644 --- a/src/tracer/nodes/Expression/BlockExpression.ts +++ b/src/tracer/nodes/Expression/BlockExpression.ts @@ -1,13 +1,13 @@ -import { BlockStatement, SourceLocation } from 'estree' -import { StepperBaseNode } from '../../interface' -import { StepperExpression, StepperPattern, undefinedNode } from '..' -import { convert } from '../../generator' +import type { BlockStatement, SourceLocation } from 'estree' +import { type StepperExpression, type StepperPattern, undefinedNode } from '..' import { redex } from '../..' -import { StepperVariableDeclaration } from '../Statement/VariableDeclaration' +import { convert } from '../../generator' +import type { StepperBaseNode } from '../../interface' import { assignMuTerms, getFreshName } from '../../utils' -import { StepperReturnStatement } from '../Statement/ReturnStatement' -import { StepperStatement } from '../Statement' +import type { StepperStatement } from '../Statement' import { StepperFunctionDeclaration } from '../Statement/FunctionDeclaration' +import { StepperReturnStatement } from '../Statement/ReturnStatement' +import { StepperVariableDeclaration } from '../Statement/VariableDeclaration' // TODO: add docs, because this is a block expression, not a block statement, and this does not follow official estree spec export class StepperBlockExpression implements StepperBaseNode { diff --git a/src/tracer/nodes/Expression/ConditionalExpression.ts b/src/tracer/nodes/Expression/ConditionalExpression.ts index 409366c8b..034e13d83 100644 --- a/src/tracer/nodes/Expression/ConditionalExpression.ts +++ b/src/tracer/nodes/Expression/ConditionalExpression.ts @@ -1,8 +1,8 @@ -import { ConditionalExpression, Comment, SourceLocation } from 'estree' -import { StepperBaseNode } from '../../interface' +import type { Comment, ConditionalExpression, SourceLocation } from 'estree' +import type { StepperExpression, StepperPattern } from '..' import { redex } from '../..' -import { StepperExpression, StepperPattern } from '..' import { convert } from '../../generator' +import { type StepperBaseNode } from '../../interface' export class StepperConditionalExpression implements ConditionalExpression, StepperBaseNode { type: 'ConditionalExpression' diff --git a/src/tracer/nodes/Expression/FunctionApplication.ts b/src/tracer/nodes/Expression/FunctionApplication.ts index d32c9f4a1..9302cfbc1 100644 --- a/src/tracer/nodes/Expression/FunctionApplication.ts +++ b/src/tracer/nodes/Expression/FunctionApplication.ts @@ -1,14 +1,14 @@ -import { SimpleCallExpression, Comment, SourceLocation } from 'estree' import * as astring from 'astring' -import { StepperBaseNode } from '../../interface' +import type { Comment, SimpleCallExpression, SourceLocation } from 'estree' +import type { StepperExpression, StepperPattern } from '..' import { redex } from '../..' -import { StepperExpression, StepperPattern } from '..' +import { getBuiltinFunction, isBuiltinFunction } from '../../builtins' import { convert } from '../../generator' +import type { StepperBaseNode } from '../../interface' import { StepperBlockStatement } from '../Statement/BlockStatement' -import { getBuiltinFunction, isBuiltinFunction } from '../../builtins' import { StepperReturnStatement } from '../Statement/ReturnStatement' -import { StepperBlockExpression } from './BlockExpression' import { StepperArrowFunctionExpression } from './ArrowFunctionExpression' +import { StepperBlockExpression } from './BlockExpression' export class StepperFunctionApplication implements SimpleCallExpression, StepperBaseNode { type: 'CallExpression' callee: StepperExpression diff --git a/src/tracer/nodes/Expression/Identifier.ts b/src/tracer/nodes/Expression/Identifier.ts index 24d291364..94d79631e 100644 --- a/src/tracer/nodes/Expression/Identifier.ts +++ b/src/tracer/nodes/Expression/Identifier.ts @@ -1,8 +1,8 @@ -import { Identifier, Comment, SourceLocation } from 'estree' -import { StepperBaseNode } from '../../interface' -import { StepperExpression, StepperPattern } from '..' +import type { Comment, Identifier, SourceLocation } from 'estree' +import type { StepperExpression, StepperPattern } from '..' import { redex } from '../..' import { isBuiltinFunction } from '../../builtins' +import type { StepperBaseNode } from '../../interface' export class StepperIdentifier implements Identifier, StepperBaseNode { type: 'Identifier' diff --git a/src/tracer/nodes/Expression/Literal.ts b/src/tracer/nodes/Expression/Literal.ts index adda29194..d69ce3072 100644 --- a/src/tracer/nodes/Expression/Literal.ts +++ b/src/tracer/nodes/Expression/Literal.ts @@ -10,9 +10,9 @@ * - contract(): Throws an error as contraction is not implemented. * - oneStep(): Throws an error as one-step evaluation is not implemented. */ -import { Comment, SimpleLiteral, SourceLocation } from 'estree' -import { StepperBaseNode } from '../../interface' -import { StepperExpression, StepperPattern } from '..' +import type { Comment, SimpleLiteral, SourceLocation } from 'estree' +import type { StepperExpression, StepperPattern } from '..' +import type { StepperBaseNode } from '../../interface' export class StepperLiteral implements SimpleLiteral, StepperBaseNode { type: 'Literal' diff --git a/src/tracer/nodes/Expression/LogicalExpression.ts b/src/tracer/nodes/Expression/LogicalExpression.ts index 5d7542d05..324906623 100644 --- a/src/tracer/nodes/Expression/LogicalExpression.ts +++ b/src/tracer/nodes/Expression/LogicalExpression.ts @@ -1,8 +1,8 @@ -import { LogicalExpression, LogicalOperator, Comment, SourceLocation } from 'estree' -import { StepperBaseNode } from '../../interface' +import type { Comment, LogicalExpression, LogicalOperator, SourceLocation } from 'estree' +import type { StepperExpression, StepperPattern } from '..' import { redex } from '../..' -import { StepperExpression, StepperPattern } from '..' import { convert } from '../../generator' +import type { StepperBaseNode } from '../../interface' import { StepperLiteral } from './Literal' export class StepperLogicalExpression implements LogicalExpression, StepperBaseNode { diff --git a/src/tracer/nodes/Expression/UnaryExpression.ts b/src/tracer/nodes/Expression/UnaryExpression.ts index e27c225d4..5e4f3d97c 100644 --- a/src/tracer/nodes/Expression/UnaryExpression.ts +++ b/src/tracer/nodes/Expression/UnaryExpression.ts @@ -1,8 +1,8 @@ -import { Comment, Literal, SourceLocation, UnaryExpression, UnaryOperator } from 'estree' -import { StepperBaseNode } from '../../interface' +import type { Comment, Literal, SourceLocation, UnaryExpression, UnaryOperator } from 'estree' +import type { StepperExpression, StepperPattern } from '..' import { redex } from '../..' import { convert } from '../../generator' -import { StepperExpression, StepperPattern } from '..' +import type { StepperBaseNode } from '../../interface' import { StepperLiteral } from './Literal' export class StepperUnaryExpression implements UnaryExpression, StepperBaseNode { diff --git a/src/tracer/nodes/Program.ts b/src/tracer/nodes/Program.ts index 2430e1a12..1bb7b8ceb 100644 --- a/src/tracer/nodes/Program.ts +++ b/src/tracer/nodes/Program.ts @@ -1,13 +1,12 @@ -import { Comment, Program, SourceLocation } from 'estree' -import { StepperBaseNode } from '../interface' -import { convert } from '../generator' - +import type { Comment, Program, SourceLocation } from 'estree' import { redex } from '..' +import { convert } from '../generator' +import type { StepperBaseNode } from '../interface' import { assignMuTerms } from '../utils' -import { StepperVariableDeclaration } from './Statement/VariableDeclaration' -import { StepperStatement } from './Statement' +import type { StepperStatement } from './Statement' import { StepperFunctionDeclaration } from './Statement/FunctionDeclaration' -import { StepperExpression, StepperPattern, undefinedNode } from '.' +import { StepperVariableDeclaration } from './Statement/VariableDeclaration' +import { type StepperExpression, type StepperPattern, undefinedNode } from '.' export class StepperProgram implements Program, StepperBaseNode { type: 'Program' diff --git a/src/tracer/nodes/Statement/BlockStatement.ts b/src/tracer/nodes/Statement/BlockStatement.ts index 0e34eef84..fed0cd1be 100644 --- a/src/tracer/nodes/Statement/BlockStatement.ts +++ b/src/tracer/nodes/Statement/BlockStatement.ts @@ -1,13 +1,13 @@ -import { BlockStatement, Comment, SourceLocation } from 'estree' -import { StepperBaseNode } from '../../interface' -import { StepperExpression, StepperPattern, undefinedNode } from '..' -import { convert } from '../../generator' +import type { BlockStatement, Comment, SourceLocation } from 'estree' +import { type StepperExpression, type StepperPattern, undefinedNode } from '..' import { redex } from '../..' +import { convert } from '../../generator' +import type { StepperBaseNode } from '../../interface' import { assignMuTerms, getFreshName } from '../../utils' -import { StepperVariableDeclaration } from './VariableDeclaration' import { StepperFunctionDeclaration } from './FunctionDeclaration' import { StepperReturnStatement } from './ReturnStatement' -import { StepperStatement } from '.' +import { StepperVariableDeclaration } from './VariableDeclaration' +import type { StepperStatement } from '.' export class StepperBlockStatement implements BlockStatement, StepperBaseNode { type: 'BlockStatement' diff --git a/src/tracer/nodes/Statement/ExpressionStatement.ts b/src/tracer/nodes/Statement/ExpressionStatement.ts index c521c7f0b..becaa5132 100644 --- a/src/tracer/nodes/Statement/ExpressionStatement.ts +++ b/src/tracer/nodes/Statement/ExpressionStatement.ts @@ -1,8 +1,8 @@ -import { Comment, SourceLocation, ExpressionStatement } from 'estree' -import { StepperBaseNode } from '../../interface' -import { convert } from '../../generator' -import { StepperExpression, StepperPattern } from '..' +import type { Comment, ExpressionStatement, SourceLocation } from 'estree' +import type { StepperExpression, StepperPattern } from '..' import { redex } from '../..' +import { convert } from '../../generator' +import type { StepperBaseNode } from '../../interface' export class StepperExpressionStatement implements ExpressionStatement, StepperBaseNode { type: 'ExpressionStatement' diff --git a/src/tracer/nodes/Statement/FunctionDeclaration.ts b/src/tracer/nodes/Statement/FunctionDeclaration.ts index de668b602..61bb637e3 100644 --- a/src/tracer/nodes/Statement/FunctionDeclaration.ts +++ b/src/tracer/nodes/Statement/FunctionDeclaration.ts @@ -1,11 +1,11 @@ -import { Comment, FunctionDeclaration, SourceLocation } from 'estree' -import { StepperBaseNode } from '../../interface' -import { StepperIdentifier } from '../Expression/Identifier' -import { StepperExpression, StepperPattern, undefinedNode } from '..' -import { convert } from '../../generator' +import type { Comment, FunctionDeclaration, SourceLocation } from 'estree' +import { type StepperExpression, type StepperPattern, undefinedNode } from '..' import { redex } from '../..' -import { StepperArrowFunctionExpression } from '../Expression/ArrowFunctionExpression' +import { convert } from '../../generator' +import type { StepperBaseNode } from '../../interface' import { getFreshName } from '../../utils' +import { StepperArrowFunctionExpression } from '../Expression/ArrowFunctionExpression' +import { StepperIdentifier } from '../Expression/Identifier' import { StepperBlockStatement } from './BlockStatement' import { StepperVariableDeclaration } from './VariableDeclaration' diff --git a/src/tracer/nodes/Statement/IfStatement.ts b/src/tracer/nodes/Statement/IfStatement.ts index e37b70e5e..5815d6052 100644 --- a/src/tracer/nodes/Statement/IfStatement.ts +++ b/src/tracer/nodes/Statement/IfStatement.ts @@ -1,12 +1,12 @@ -import { Comment, IfStatement, SourceLocation } from 'estree' -import { StepperBaseNode } from '../../interface' -import { StepperExpression, StepperPattern, undefinedNode } from '..' -import { convert } from '../../generator' +import type { Comment, IfStatement, SourceLocation } from 'estree' +import { type StepperExpression, type StepperPattern, undefinedNode } from '..' import { redex } from '../..' +import { convert } from '../../generator' +import type { StepperBaseNode } from '../../interface' import { StepperLiteral } from '../Expression/Literal' import { StepperBlockStatement } from './BlockStatement' import { StepperExpressionStatement } from './ExpressionStatement' -import { StepperStatement } from '.' +import type { StepperStatement } from '.' export class StepperIfStatement implements IfStatement, StepperBaseNode { type: 'IfStatement' diff --git a/src/tracer/nodes/Statement/ReturnStatement.ts b/src/tracer/nodes/Statement/ReturnStatement.ts index e0de542a8..f9f0ea385 100644 --- a/src/tracer/nodes/Statement/ReturnStatement.ts +++ b/src/tracer/nodes/Statement/ReturnStatement.ts @@ -1,8 +1,8 @@ -import { Comment, SourceLocation, ReturnStatement } from 'estree' -import { StepperBaseNode } from '../../interface' -import { convert } from '../../generator' -import { StepperExpression, StepperPattern } from '..' +import type { Comment, ReturnStatement, SourceLocation } from 'estree' +import type { StepperExpression, StepperPattern } from '..' import { redex } from '../..' +import { convert } from '../../generator' +import type { StepperBaseNode } from '../../interface' export class StepperReturnStatement implements ReturnStatement, StepperBaseNode { type: 'ReturnStatement' diff --git a/src/tracer/nodes/Statement/VariableDeclaration.ts b/src/tracer/nodes/Statement/VariableDeclaration.ts index cf7d68777..2c34491f5 100644 --- a/src/tracer/nodes/Statement/VariableDeclaration.ts +++ b/src/tracer/nodes/Statement/VariableDeclaration.ts @@ -1,8 +1,8 @@ -import { Comment, SourceLocation, VariableDeclaration, VariableDeclarator } from 'estree' -import { StepperBaseNode } from '../../interface' -import { convert } from '../../generator' -import { StepperExpression, StepperPattern, undefinedNode } from '..' +import type { Comment, SourceLocation, VariableDeclaration, VariableDeclarator } from 'estree' +import { type StepperExpression, type StepperPattern, undefinedNode } from '..' import { redex } from '../..' +import { convert } from '../../generator' +import type { StepperBaseNode } from '../../interface' export class StepperVariableDeclarator implements VariableDeclarator, StepperBaseNode { type: 'VariableDeclarator' diff --git a/src/tracer/steppers.ts b/src/tracer/steppers.ts index 42a7e449c..642b039e4 100644 --- a/src/tracer/steppers.ts +++ b/src/tracer/steppers.ts @@ -1,14 +1,14 @@ import * as es from 'estree' -import { Context, IOptions } from '..' -import { checkProgramForUndefinedVariables } from '../validator/validator' +import type { Context, IOptions } from '..' import { UndefinedVariable } from '../errors/errors' -import { StepperBaseNode } from './interface' +import { checkProgramForUndefinedVariables } from '../validator/validator' +import { prelude } from './builtins' import { explain } from './generator' -import { StepperProgram } from './nodes/Program' +import type { StepperBaseNode } from './interface' import { undefinedNode } from './nodes' +import { StepperProgram } from './nodes/Program' import { StepperExpressionStatement } from './nodes/Statement/ExpressionStatement' -import { prelude } from './builtins' -import { IStepperPropContents, Marker, redex } from '.' +import { type IStepperPropContents, type Marker, redex } from '.' export function getSteps( inputNode: es.BaseNode, diff --git a/src/transpiler/__tests__/native.ts b/src/transpiler/__tests__/native.ts index 2acdffd28..7cefa848b 100644 --- a/src/transpiler/__tests__/native.ts +++ b/src/transpiler/__tests__/native.ts @@ -1,8 +1,8 @@ import { runInContext } from '../../index' -import { mockContext } from '../../utils/testing/mocks' -import { Chapter, Finished } from '../../types' +import { Chapter, type Finished } from '../../types' import { stripIndent } from '../../utils/formatters' import { expectNativeToTimeoutAndError } from '../../utils/testing' +import { mockContext } from '../../utils/testing/mocks' test('Proper stringify-ing of arguments during potentially infinite iterative function calls', async () => { const code = stripIndent` diff --git a/src/transpiler/evalContainer.ts b/src/transpiler/evalContainer.ts index 6d1e095e8..0eccf549d 100644 --- a/src/transpiler/evalContainer.ts +++ b/src/transpiler/evalContainer.ts @@ -1,5 +1,5 @@ import { NATIVE_STORAGE_ID } from '../constants' -import { NativeStorage } from '../types' +import type { NativeStorage } from '../types' type Evaler = (code: string, nativeStorage: NativeStorage) => any diff --git a/src/transpiler/transpiler.ts b/src/transpiler/transpiler.ts index 83ea89e9f..a2d193e02 100644 --- a/src/transpiler/transpiler.ts +++ b/src/transpiler/transpiler.ts @@ -1,8 +1,6 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ import { generate } from 'astring' import type es from 'estree' import { type RawSourceMap, SourceMapGenerator } from 'source-map' - import { NATIVE_STORAGE_ID, UNKNOWN_LOCATION } from '../constants' import { Chapter, type Context, type NativeStorage, type Node, Variant } from '../types' import * as create from '../utils/ast/astCreator' @@ -14,7 +12,7 @@ import { getIdentifiersInProgram, getNativeIds, getUniqueId, - NativeIds + type NativeIds } from '../utils/uniqueIds' import { simple } from '../utils/walkers' import { checkForUndefinedVariables } from '../validator/validator' diff --git a/src/typeChecker/internalTypeErrors.ts b/src/typeChecker/internalTypeErrors.ts index a00065754..cefc9b1eb 100644 --- a/src/typeChecker/internalTypeErrors.ts +++ b/src/typeChecker/internalTypeErrors.ts @@ -1,5 +1,12 @@ import { UNKNOWN_LOCATION } from '../constants' -import { ErrorSeverity, ErrorType, Node, NodeWithInferredType, SourceError, Type } from '../types' +import { + ErrorSeverity, + ErrorType, + type Node, + type NodeWithInferredType, + type SourceError, + type Type +} from '../types' import { typeToString } from '../utils/stringify' import * as tsEs from './tsESTree' diff --git a/src/typeChecker/typeErrorChecker.ts b/src/typeChecker/typeErrorChecker.ts index 9e16269b6..79d0178ed 100644 --- a/src/typeChecker/typeErrorChecker.ts +++ b/src/typeChecker/typeErrorChecker.ts @@ -1,7 +1,6 @@ import { parse as babelParse } from '@babel/parser' import * as es from 'estree' import { cloneDeep, isEqual } from 'lodash' - import { ConstNotAssignableTypeError, DuplicateTypeAliasError, @@ -21,19 +20,19 @@ import { UndefinedVariableTypeError } from '../errors/typeErrors' import { - BindableType, + type BindableType, Chapter, type Context, disallowedTypes, type Pair, - PrimitiveType, - SArray, - TSAllowedTypes, - TSBasicType, - TSDisallowedTypes, + type PrimitiveType, + type SArray, + type TSAllowedTypes, + type TSBasicType, + type TSDisallowedTypes, type Type, - TypeEnvironment, - Variable + type TypeEnvironment, + type Variable } from '../types' import { TypecheckError } from './internalTypeErrors' import { parseTreeTypesPrelude } from './parseTreeTypes.prelude' diff --git a/src/typeChecker/utils.ts b/src/typeChecker/utils.ts index 02beba491..8da449973 100644 --- a/src/typeChecker/utils.ts +++ b/src/typeChecker/utils.ts @@ -3,22 +3,22 @@ // ======================================= import { - AllowedDeclarations, - BindableType, + type AllowedDeclarations, + type BindableType, Chapter, - ForAll, - FunctionType, - List, - LiteralType, - Pair, - PredicateType, - Primitive, - SArray, - TSBasicType, - Type, - TypeEnvironment, - UnionType, - Variable + type ForAll, + type FunctionType, + type List, + type LiteralType, + type Pair, + type PredicateType, + type Primitive, + type SArray, + type TSBasicType, + type Type, + type TypeEnvironment, + type UnionType, + type Variable } from '../types' import * as tsEs from './tsESTree' diff --git a/src/types.ts b/src/types.ts index f12120427..02ee595e0 100644 --- a/src/types.ts +++ b/src/types.ts @@ -5,14 +5,13 @@ /* tslint:disable:max-classes-per-file */ -import { SourceLocation } from 'acorn' +import type { SourceLocation } from 'acorn' import * as es from 'estree' - +import { Representation } from './alt-langs/mapper' import { EnvTree } from './createContext' import Heap from './cse-machine/heap' import { Control, Stash, Transformers } from './cse-machine/interpreter' import type { ModuleFunctions } from './modules/moduleTypes' -import { Representation } from './alt-langs/mapper' /** * Defines functions that act as built-ins, but might rely on @@ -329,13 +328,13 @@ export interface BlockExpression extends es.BaseExpression { export type substituterNodes = Node | BlockExpression -export { - Instruction as SVMInstruction, - Program as SVMProgram, +export type { Address as SVMAddress, Argument as SVMArgument, + SVMFunction, + Instruction as SVMInstruction, Offset as SVMOffset, - SVMFunction + Program as SVMProgram } from './vm/svml-compiler' export type ContiguousArrayElementExpression = Exclude diff --git a/src/utils/__tests__/rttc.ts b/src/utils/__tests__/rttc.ts index 1f42fdacd..9aa903c9a 100644 --- a/src/utils/__tests__/rttc.ts +++ b/src/utils/__tests__/rttc.ts @@ -1,8 +1,7 @@ -import { BinaryOperator, UnaryOperator } from 'estree' - -import { mockClosure, mockRuntimeContext } from '../testing/mocks' -import { Chapter, Value } from '../../types' +import type { BinaryOperator, UnaryOperator } from 'estree' +import { Chapter, type Value } from '../../types' import * as rttc from '../rttc' +import { mockClosure, mockRuntimeContext } from '../testing/mocks' const num = 0 const bool = true diff --git a/src/utils/ast/astCreator.ts b/src/utils/ast/astCreator.ts index b61e8a50f..3465d342e 100644 --- a/src/utils/ast/astCreator.ts +++ b/src/utils/ast/astCreator.ts @@ -1,11 +1,10 @@ import type es from 'estree' - -import { +import type { AllowedDeclarations, - type BlockExpression, - type FunctionDeclarationExpression, - type Node, - type StatementSequence + BlockExpression, + FunctionDeclarationExpression, + Node, + StatementSequence } from '../../types' export const locationDummyNode = (line: number, column: number, source: string | null) => diff --git a/src/utils/ast/astToString.ts b/src/utils/ast/astToString.ts index a5c432910..2204ab78e 100644 --- a/src/utils/ast/astToString.ts +++ b/src/utils/ast/astToString.ts @@ -1,6 +1,5 @@ import * as astring from 'astring' - -import { Node } from '../../types' +import type { Node } from '../../types' /** * Writes into `state` the `text` string reindented with the provided `indent`. diff --git a/src/utils/rttc.ts b/src/utils/rttc.ts index 5803113f2..af92cb995 100644 --- a/src/utils/rttc.ts +++ b/src/utils/rttc.ts @@ -1,7 +1,7 @@ import * as es from 'estree' import { RuntimeSourceError } from '../errors/runtimeSourceError' -import { Chapter, ErrorSeverity, ErrorType, Node, Value } from '../types' +import { Chapter, ErrorSeverity, ErrorType, type Node, type Value } from '../types' const LHS = ' on left hand side of operation' const RHS = ' on right hand side of operation' diff --git a/src/utils/statementSeqTransform.ts b/src/utils/statementSeqTransform.ts index 9fb9f61e2..8b9d926be 100644 --- a/src/utils/statementSeqTransform.ts +++ b/src/utils/statementSeqTransform.ts @@ -1,6 +1,5 @@ import * as es from 'estree' - -import { Node, StatementSequence } from '../types' +import type { Node, StatementSequence } from '../types' import * as ast from './ast/astCreator' function hasDeclarations(node: es.BlockStatement | es.Program): boolean { for (const statement of node.body) { diff --git a/src/utils/stringify.ts b/src/utils/stringify.ts index cd1101fe1..526bf7882 100644 --- a/src/utils/stringify.ts +++ b/src/utils/stringify.ts @@ -1,6 +1,6 @@ import { MAX_LIST_DISPLAY_LENGTH } from '../constants' import Closure from '../cse-machine/closure' -import { Type, Value } from '../types' +import type { Type, Value } from '../types' export interface ArrayLike { replPrefix: string diff --git a/src/utils/uniqueIds.ts b/src/utils/uniqueIds.ts index 4239d2a3b..e21800224 100644 --- a/src/utils/uniqueIds.ts +++ b/src/utils/uniqueIds.ts @@ -1,6 +1,6 @@ import * as es from 'estree' -import { NativeStorage } from '../types' +import type { NativeStorage } from '../types' import * as create from '../utils/ast/astCreator' import { simple } from '../utils/walkers' diff --git a/src/validator/__tests__/validator.ts b/src/validator/__tests__/validator.ts index 5439a3e78..9d8a2d18d 100644 --- a/src/validator/__tests__/validator.ts +++ b/src/validator/__tests__/validator.ts @@ -1,13 +1,13 @@ import type es from 'estree' -import { mockContext } from '../../utils/testing/mocks' import { parse } from '../../parser/parser' -import { Chapter, NodeWithInferredType } from '../../types' +import { Chapter, type NodeWithInferredType } from '../../types' +import { getSourceVariableDeclaration } from '../../utils/ast/helpers' import { stripIndent } from '../../utils/formatters' import { expectParsedError } from '../../utils/testing' +import { mockContext } from '../../utils/testing/mocks' import { simple } from '../../utils/walkers' import { validateAndAnnotate } from '../validator' -import { getSourceVariableDeclaration } from '../../utils/ast/helpers' export function toValidatedAst(code: string) { const context = mockContext(Chapter.SOURCE_1) diff --git a/src/vm/svml-assembler.ts b/src/vm/svml-assembler.ts index 124781081..94e5736d4 100644 --- a/src/vm/svml-assembler.ts +++ b/src/vm/svml-assembler.ts @@ -1,6 +1,6 @@ import Buffer from '../utils/buffer' import OpCodes, { getInstructionSize, OPCODE_MAX } from './opcodes' -import { Instruction, Program, SVMFunction } from './svml-compiler' +import type { Instruction, Program, SVMFunction } from './svml-compiler' const SVM_MAGIC = 0x5005acad const MAJOR_VER = 0 diff --git a/src/vm/util.ts b/src/vm/util.ts index bbd3f2f38..22ca41890 100644 --- a/src/vm/util.ts +++ b/src/vm/util.ts @@ -1,5 +1,5 @@ import { OpCodes } from './opcodes' -import { Program } from './svml-compiler' +import type { Program } from './svml-compiler' const OPCODES_STR = { [OpCodes.NOP]: 'NOP ',