Prevent yield() from being added before a range and filter function

Co-authored-by: Delmer Reed <delmer814+1@gmail.com>
pull/10616/head
Iris Scholten 2018-06-11 14:37:31 -07:00
parent 699d86931f
commit 533ae1acf7
2 changed files with 23 additions and 2 deletions

View File

@ -39,9 +39,20 @@ class ExpressionNode extends PureComponent<Props> {
data,
scriptUpToYield,
}) => {
let isAfterRange = false
let isAfterFilter = false
return (
<>
{funcs.map((func, i) => {
if (func.name === 'range') {
isAfterRange = true
}
if (func.name === 'filter') {
isAfterFilter = true
}
if (func.name === 'yield') {
const script = scriptUpToYield(bodyID, declarationID, i)
@ -68,6 +79,7 @@ class ExpressionNode extends PureComponent<Props> {
onChangeArg={onChangeArg}
onDelete={onDeleteFuncNode}
onToggleYield={onToggleYield}
isYieldable={isAfterFilter && isAfterRange}
isYielding={this.isNextFuncYield(i)}
declarationID={declarationID}
onGenerateScript={onGenerateScript}

View File

@ -24,6 +24,7 @@ interface Props {
onGenerateScript: () => void
declarationsFromBody: string[]
isYielding: boolean
isYieldable: boolean
}
interface State {
@ -111,9 +112,17 @@ export default class FuncNode extends PureComponent<Props, State> {
private handleClick = (e: MouseEvent<HTMLElement>): void => {
e.stopPropagation()
const {onToggleYield, index, bodyID, declarationID} = this.props
const {
onToggleYield,
index,
bodyID,
declarationID,
isYieldable,
} = this.props
onToggleYield(bodyID, declarationID, index)
if (isYieldable) {
onToggleYield(bodyID, declarationID, index)
}
}
private handleClickArgs = (e: MouseEvent<HTMLElement>): void => {
e.stopPropagation()