~ubuntu-branches/ubuntu/vivid/mozjs24/vivid

« back to all changes in this revision

Viewing changes to js/src/tests/js1_7/extensions/regress-350312.js

  • Committer: Package Import Robot
  • Author(s): Tim Lunn
  • Date: 2014-02-11 21:55:34 UTC
  • Revision ID: package-import@ubuntu.com-20140211215534-m1zyq5aj59md3y07
Tags: upstream-24.2.0
ImportĀ upstreamĀ versionĀ 24.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 
2
/* This Source Code Form is subject to the terms of the Mozilla Public
 
3
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 
4
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
5
 
 
6
//-----------------------------------------------------------------------------
 
7
var BUGNUMBER = 350312;
 
8
var summary = 'Accessing wrong stack slot with nested catch/finally';
 
9
var actual = '';
 
10
var expect = '';
 
11
 
 
12
 
 
13
//-----------------------------------------------------------------------------
 
14
test();
 
15
//-----------------------------------------------------------------------------
 
16
 
 
17
function test()
 
18
{
 
19
  enterFunc ('test');
 
20
  printBugNumber(BUGNUMBER);
 
21
  printStatus (summary);
 
22
 
 
23
  var iter;
 
24
  function gen()
 
25
  {
 
26
    try {
 
27
      yield iter;
 
28
    } catch (e if e == null) {
 
29
      actual += 'CATCH,';
 
30
      print("CATCH");
 
31
    } finally {
 
32
      actual += 'FINALLY';
 
33
      print("FINALLY");
 
34
    }
 
35
  }
 
36
 
 
37
  expect = 'FINALLY';
 
38
  actual = '';
 
39
  (iter = gen()).next().close();
 
40
  reportCompare(expect, actual, summary);
 
41
 
 
42
  expect = 'FINALLY';
 
43
  actual = '';
 
44
  try
 
45
  {
 
46
    (iter = gen()).next().throw(1);
 
47
  }
 
48
  catch(ex)
 
49
  {
 
50
  }
 
51
  reportCompare(expect, actual, summary);
 
52
 
 
53
  expect = 'CATCH,FINALLY';
 
54
  actual = '';
 
55
  try
 
56
  {
 
57
    (iter = gen()).next().throw(null);
 
58
  }
 
59
  catch(ex)
 
60
  {
 
61
  }
 
62
  reportCompare(expect, actual, summary);
 
63
 
 
64
  expect = 'FINALLY';
 
65
  actual = '';
 
66
  var expectexcp = '[object StopIteration]';
 
67
  var actualexcp = '';
 
68
  try
 
69
  {
 
70
    (iter = gen()).next().next();     
 
71
  }
 
72
  catch(ex)
 
73
  {
 
74
    actualexcp = ex + '';
 
75
  }
 
76
  reportCompare(expect, actual, summary);
 
77
  reportCompare(expectexcp, actualexcp, summary);
 
78
 
 
79
  exitFunc ('test');
 
80
}