@@ -26,6 +26,7 @@ import org.xpathqs.core.selector.Block
2626import org.xpathqs.core.selector.NullSelector
2727import org.xpathqs.core.selector.base.BaseSelector
2828import org.xpathqs.core.selector.base.ISelector
29+ import org.xpathqs.core.selector.group.GroupSelector
2930
3031/* *
3132 * Class for initializing Selectors names and structure via Reflection
@@ -45,21 +46,13 @@ internal class SelectorParser(
4546 */
4647 fun parse () {
4748 val baseName = if (base.name.isNotEmpty()) base.name + " ." else " "
48-
49- rootObj.setBase(base)
50- rootObj.setName(baseName + rootObj::class .simpleName!! )
51- rootObj.setAnnotations(rootObj::class .annotations.toList())
52- rootObj.freeze()
53-
49+ setFields(rootObj, base, baseName + rootObj::class .simpleName!! , rootObj::class .annotations)
5450 rootObj.children = srf.innerSelectors
5551
5652 srf.innerSelectorFields.forEach {
5753 it.isAccessible = true
5854 val sel = it.get(rootObj) as BaseSelector
59- sel.setBase(rootObj)
60- sel.setName(rootObj.name + " ." + it.name)
61- sel.setAnnotations(it.annotations.toList())
62- sel.freeze()
55+ setFields(sel, rootObj, rootObj.name + " ." + it.name, it.annotations.toList())
6356
6457 if (sel is Block ) {
6558 SelectorParser (sel, rootObj).parse()
@@ -70,4 +63,16 @@ internal class SelectorParser(
7063 SelectorParser (it, rootObj).parse()
7164 }
7265 }
66+
67+ private fun setFields (to : BaseSelector , base : ISelector , name : String , annotations : Collection <Annotation >) {
68+ to.setBase(base)
69+ to.setName(name)
70+ to.setAnnotations(annotations)
71+
72+ if (to is GroupSelector ) {
73+ to.freeze()
74+ } else {
75+ to.freeze()
76+ }
77+ }
7378}
0 commit comments