diff --git a/jvm/src/test/java/com/paulbutcher/test/JavaClassWithDefaultAccess.java b/jvm/src/test/java/com/paulbutcher/test/JavaClassWithDefaultAccess.java new file mode 100644 index 00000000..5748cc0b --- /dev/null +++ b/jvm/src/test/java/com/paulbutcher/test/JavaClassWithDefaultAccess.java @@ -0,0 +1,26 @@ +// Copyright (c) ScalaMock Contributors (https://github.com/paulbutcher/ScalaMock/graphs/contributors) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package com.paulbutcher.test; + +public class JavaClassWithDefaultAccess { + public JavaClassWithDefaultAccess(){} + int getSomeInt(){ return 1;} +} \ No newline at end of file diff --git a/jvm/src/test/scala/org/scalamock/test/scalatest/DefaultAccessMockTest.scala b/jvm/src/test/scala/org/scalamock/test/scalatest/DefaultAccessMockTest.scala new file mode 100644 index 00000000..9bac0bfd --- /dev/null +++ b/jvm/src/test/scala/org/scalamock/test/scalatest/DefaultAccessMockTest.scala @@ -0,0 +1,33 @@ +// Copyright (c) ScalaMock Contributors (https://github.com/paulbutcher/ScalaMock/graphs/contributors) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package org.scalamock.test.scalatest + +import com.paulbutcher.test.JavaClassWithDefaultAccess +import org.scalamock.scalatest.MockFactory +import org.scalatest.flatspec.AnyFlatSpec +import org.scalatest.matchers.should.Matchers + +class DefaultAccessMockTest extends AnyFlatSpec with MockFactory with Matchers { + "mockign classes with members with JMV default access" should "work" in { + class DefaultExtended extends JavaClassWithDefaultAccess() + val m = mock[DefaultExtended] + } +} \ No newline at end of file diff --git a/shared/src/main/scala-3/org/scalamock/clazz/Utils.scala b/shared/src/main/scala-3/org/scalamock/clazz/Utils.scala index 4333635c..1463e0c9 100644 --- a/shared/src/main/scala-3/org/scalamock/clazz/Utils.scala +++ b/shared/src/main/scala-3/org/scalamock/clazz/Utils.scala @@ -172,6 +172,7 @@ private[clazz] class Utils(using val quotes: Quotes): !sym.flags.is(Flags.Private) && !sym.flags.is(Flags.Final) && !sym.flags.is(Flags.Mutable) && + sym.privateWithin.isEmpty && !sym.name.contains("$default$") ) .zipWithIndex