diff --git a/shared/src/main/scala/scala/xml/NodeSeq.scala b/shared/src/main/scala/scala/xml/NodeSeq.scala index 07e6fe87d..18c8295b2 100644 --- a/shared/src/main/scala/scala/xml/NodeSeq.scala +++ b/shared/src/main/scala/scala/xml/NodeSeq.scala @@ -116,6 +116,7 @@ abstract class NodeSeq extends AbstractSeq[Node] with immutable.Seq[Node] with S that match { case "" => fail case "_" => makeSeq(!_.isAtom) + case "@" => fail case _ if (that(0) == '@' && this.length == 1) => atResult case _ => makeSeq(_.label == that) } diff --git a/shared/src/test/scala/scala/xml/AttributeTest.scala b/shared/src/test/scala/scala/xml/AttributeTest.scala index 0b3891496..285d24795 100644 --- a/shared/src/test/scala/scala/xml/AttributeTest.scala +++ b/shared/src/test/scala/scala/xml/AttributeTest.scala @@ -154,4 +154,23 @@ class AttributeTest { assertEquals(List(Group(Seq(Text("1"))), Group(Seq(Text("2")))), barList) } + @Test(expected=classOf[IllegalArgumentException]) + def invalidAttributeFailForOne: Unit = { + \ "@" + } + + @Test(expected=classOf[IllegalArgumentException]) + def invalidAttributeFailForMany: Unit = { + .child \ "@" + } + + @Test(expected=classOf[IllegalArgumentException]) + def invalidEmptyAttributeFailForOne: Unit = { + \@ "" + } + + @Test(expected=classOf[IllegalArgumentException]) + def invalidEmptyAttributeFailForMany: Unit = { + .child \@ "" + } }