Files
blockly/core/interfaces/i_legacy_procedure_blocks.ts
Beka Westberg c0934216f8 fix: creating duplicate params via renaming vars (#6885)
* feat: add IVariableHolder

* chore: reorganize variable prompts to early return

* fix: add retriggering prompt for conflicting params

* chore: add unit tests

* chore: fix build

* chore: reorganize checking for param conflicts

* fix: visibility

* chore: rename variable holder interface

* chore: fix typo

* chore: fix lint
2023-03-09 06:00:48 -08:00

48 lines
1.1 KiB
TypeScript

/**
* @license
* Copyright 2023 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
/**
* Legacy means of representing a procedure signature. The elements are
* respectively: name, parameter names, and whether it has a return value.
*/
export type ProcedureTuple = [string, string[], boolean];
/**
* Procedure block type.
*
* @internal
*/
export interface ProcedureBlock {
getProcedureCall: () => string;
renameProcedure: (p1: string, p2: string) => void;
getProcedureDef: () => ProcedureTuple;
}
/** @internal */
export interface LegacyProcedureDefBlock {
getProcedureDef: () => ProcedureTuple
}
/** @internal */
export function isLegacyProcedureDefBlock(block: Object):
block is LegacyProcedureDefBlock {
return (block as any).getProcedureDef !== undefined;
}
/** @internal */
export interface LegacyProcedureCallBlock {
getProcedureCall: () => string;
renameProcedure: (p1: string, p2: string) => void;
}
/** @internal */
export function isLegacyProcedureCallBlock(block: Object):
block is LegacyProcedureCallBlock {
return (block as any).getProcedureCall !== undefined &&
(block as any).renameProcedure !== undefined;
}