Skip to content

Commit 7ec1e80

Browse files
committed
Fix Object#clone
Throw CloneNotSupportedException
1 parent fd80c64 commit 7ec1e80

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

src/Packages/PHPJava/Extended/_Object.php

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
use PHPJava\Packages\PHPJava\Kernel\Behavior\System;
55
use PHPJava\Packages\java\lang\NoSuchMethodException;
6+
use PHPJava\Packages\java\lang\CloneNotSupportedException;
67

78
trait _Object
89
{
9-
1010
private $parameters;
1111

1212
/**
@@ -41,12 +41,9 @@ public function __call($name, $arguments)
4141
throw new NoSuchMethodException($name . ' does not exist on ' . get_class($this));
4242
}
4343

44-
/**
45-
* @return _Object
46-
*/
47-
public function __default_clone(): _Object
44+
public function __default_clone(): void
4845
{
49-
return clone $this;
46+
throw new CloneNotSupportedException();
5047
}
5148

5249
/**
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
namespace PHPJava\Tests\Packages\PHPJava\Extended\_Object;
3+
4+
use PHPUnit\Framework\TestCase;
5+
use PHPJava\Packages\java\lang\CloneNotSupportedException;
6+
7+
class DummyObject
8+
{
9+
use \PHPJava\Packages\PHPJava\Extended\_Object;
10+
}
11+
12+
class _ObjectTest extends Base
13+
{
14+
public function testClone()
15+
{
16+
$this->expectException(CloneNotSupportedException);
17+
$target = new DummyObject();
18+
$method = new \ReflectionMethod(get_class($target), '__clone');
19+
$method->setAccessible(true);
20+
$method->invoke($target);
21+
}
22+
}

0 commit comments

Comments
 (0)