---
title: Statements
description: Statements control execution in the Flux functional data scripting language.
url: https://docs.influxdata.com/flux/v0/spec/statements/
estimated_tokens: 1483
product: Flux
version: v0
---

# Statements

A *statement* controls execution.

```js
Statement      = [ Attributes ] StatementInner .
StatementInner = OptionAssignment
                | BuiltinStatement
                | VariableAssignment
                | ReturnStatement
                | ExpressionStatement
                | TestcaseStatement .
```

## Return statements

A terminating statement prevents execution of all statements that appear after it in the same block. A return statement is a terminating statement.

```
ReturnStatement = "return" Expression .
```

## Expression statements

An *expression statement* is an expression where the computed value is discarded.

```
ExpressionStatement = Expression .
```

##### Examples of expression statements

```js
1 + 1
f()
a
```

#### Testcase statements

A *testcase* statement defines a test case.

Testcase statements only work within the context of a Flux development environment.

```js
TestcaseStatement = "testcase" identifier [ TestcaseExtention ] Block .
TestcaseExtention = "extends" string_lit
```

Test cases are defined as a set of statements with special scoping rules. Each test case statement in a file is considered to be its own main package. In effect, all statements in package scope and all statements contained within the test case statement are flattened into a single main package and executed. Use the `testing` package from the standard library to control the pass failure of the test case.

Test extension augments an existing test case with more statements or attributes. A special function call, `super()`, must be made inside the body of a test case extension. All statements from the parent test case will be executed in its place.

##### Basic testcase for addition

```js
import "testing"

testcase addition {
    testing.assertEqualValues(got: 1 + 1, want: 2)
}
```

##### Example testcase extension to prevent feature regression

```js
@feature({vectorization: true})
testcase vector_addition extends "basics_test.addition" {
    super()
}
```

[Packages](/flux/v0/spec/packages/) [Side effects](/flux/v0/spec/side-effects/)
