<link rel="stylesheet" href="../style.css" />

[TOC]
# test.versions

<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 1</span></div>

## **PROTOCOLS**

## OtherProtocol {#OtherProtocol}
*Defined in [test.versions/versions.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:tools/fidl/fidlc/testdata/versions.test.fidl;l=44)*

## Protocol {#Protocol}
*Defined in [test.versions/versions.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:tools/fidl/fidlc/testdata/versions.test.fidl;l=47)*
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div>
### Foo {#Protocol.Foo}

<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div>
#### Request {#Protocol.Foo_Request}

&lt;EMPTY&gt;



## **STRUCTS**

### Struct  {#Struct data-text="Struct"}
*Defined in [test.versions/versions.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:tools/fidl/fidlc/testdata/versions.test.fidl;l=23)*
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div>
<table>
    <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
        <tr id="Struct.x">
            <td><code>x</code></td>
            <td>
                <code>uint32</code>
            </td>
            <td><div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div></td>
            <td>No default</td>
        </tr>
</table>


## **ENUMS**

### Enum [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Enum data-text="Enum"}
Type: <code>uint32</code>

*Defined in [test.versions/versions.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:tools/fidl/fidlc/testdata/versions.test.fidl;l=17)*
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div>
<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="Enum.A">
<td><h3 id="Enum.A" class="add-link hide-from-toc">A</h3></td>
            <td><code>1</code></td>
            <td><div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div></td>
        </tr>
</table>


## **TABLES**

### Table  {#Table data-text="Table"}


*Defined in [test.versions/versions.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:tools/fidl/fidlc/testdata/versions.test.fidl;l=29)*
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div>
<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="Table.x">
<td><h3 id="Table.x" class="add-link hide-from-toc">1</h3></td>
            <td><code>x</code></td>
            <td>
                <code>uint32</code>
            </td>
            <td><div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div></td>
        </tr>
        <tr id="Table.">
<td><h3 id="Table." class="add-link hide-from-toc">2</h3></td>
            <td><code>RESERVED</code></td>
            <td>
                <code></code>
            </td>
            <td><div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div></td>
        </tr>
</table>


## **UNIONS**

### Union [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#Union data-text="Union"}
*Defined in [test.versions/versions.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:tools/fidl/fidlc/testdata/versions.test.fidl;l=37)*
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div><table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="Union.x">
<td><h3 id="Union.x" class="add-link hide-from-toc">1</h3></td>
            <td><code>x</code></td>
            <td>
                <code>uint32</code>
            </td>
            <td><div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div></td>
        </tr>
        <tr id="Union.">
<td><h3 id="Union." class="add-link hide-from-toc">2</h3></td>
            <td><code></code></td>
            <td>
                <code></code>
            </td>
            <td><div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div></td>
        </tr>
</table>


## **BITS**

### Bits [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Bits}
Type: <code>uint32</code>

*Defined in [test.versions/versions.test.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:tools/fidl/fidlc/testdata/versions.test.fidl;l=11)*
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div>
<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="Bits.A">
<td><h3 id="Bits.A" class="add-link hide-from-toc">A</h3></td>
            <td>1</td>
            <td><div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div></td>
        </tr>
</table>


## **CONSTANTS**

<table>
    <tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr>
        <tr id="ADDED_AT_HEAD">
            <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:tools/fidl/fidlc/testdata/versions.test.fidl;l=63">ADDED_AT_HEAD</a></td>
                <td>
                    <code>true</code>
                </td>
                <td><code>bool</code></td>
            <td><div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: HEAD</span></div></td>
        </tr>
        <tr id="Const">
            <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:tools/fidl/fidlc/testdata/versions.test.fidl;l=8">Const</a></td>
                <td>
                    <code>0</code>
                </td>
                <td><code>uint32</code></td>
            <td><div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div></td>
        </tr>
</table>

## **TYPE ALIASES**

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="Alias">
            <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:tools/fidl/fidlc/testdata/versions.test.fidl;l=5">Alias</a></td>
            <td>
                <code>string</code></td>
            <td><div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 3</span> <span class="fidl-attribute fidl-version">Added: 2</span></div></td>
        </tr>
</table>