# dmd.statementsem

Does semantic analysis for statements.

Specification: Statements

#### Authors

Walter Bright

#### License

Boost License 1.0

Source: statementsem.d

Documentation: https://dlang.org/phobos/dmd_statementsem.html

Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/statementsem.d

- `scopeCode`

  #### Declaration

  `Statement `scopeCode`(Statement `statement`, Scope* `sc`, out Statement `sentry`, out Statement `sexception`, out Statement `sfinally`);`

  If ``statement`` has code that needs to run in a finally clause at the end of the current scope, return that code in the form of a Statement.

  #### Parameters

  `Statement `statement`` | the `statement`
  `Scope* `sc`` | context
  `Statement `sentry`` | set to code executed upon entry to the scope
  `Statement `sexception`` | set to code executed upon exit from the scope via exception
  `Statement `sfinally`` | set to code executed in finally block

  #### Return Value

  code to be run in the finally clause

- `TupleForeachArgs`

  #### Declaration

  `template `TupleForeachArgs`(bool isStatic, bool isDecl)`

  Determines additional argument types for makeTupleForeach.

- `TupleForeachRet`

  #### Declaration

  `template `TupleForeachRet`(bool isStatic, bool isDecl)`

  Determines the return type of makeTupleForeach.

- `makeTupleForeach`

  #### Declaration

  `TupleForeachRet!(isStatic, isDecl) `makeTupleForeach`(bool isStatic, bool isDecl)(Scope* `sc`, ForeachStatement `fs`, TupleForeachArgs!(isStatic, isDecl) `args`);`

  See StatementSemanticVisitor.`makeTupleForeach`. This is a simple wrapper that returns the generated statements/declarations.