// Copyright 2009 the Sputnik authors.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
info: Check Empty Statement for automatic semicolon insertion
es5id: 7.9_A8_T5
description: >
    Checking if execution of some semicolons without LineTerminators
    but with numbers passes
---*/

//CHECK#1
;;1;;1;;1
