//because Link is top-down, the last repeated args take effect
because Link is top-down, the last repeated args take effect
// because Link is top - down the last repeated args take effect
func (t *astTest) Link() *errors.JVSAstError {
	if t.buildName != "" {
		build := jvsAstRoot.GetBuild(t.buildName)
		if build == nil {
			return errors.JVSAstLinkError(t.Name+"("+t.file+")", "build "+t.buildName+" of "+t.Name+"is undef!")
		}
		t.build = build
	}
	for _, arg := range t.args {
		opt, err := GetJvsAstOption(arg)
		if err != nil {
			return errors.JVSAstLinkError("args of "+t.Name+"("+t.file+")", err.Error())
		}
		t.optionArgs.Add(opt.GetName(), opt.Clone())
	}
	return nil
}
func ( t * astTest ) Link ( ) * errors . JVSAstError { if t . buildName != " " { build := jvsAstRoot . GetBuild ( t . buildName ) if build == nil { return errors . JVSAstLinkError ( t . Name + " " + t . file + " " , " " + t . buildName + " " + t . Name + " " ) } t . build = build } for _ , arg := range t . args { opt , err := GetJvsAstOption ( arg ) if err != nil { return errors . JVSAstLinkError ( " " + t . Name + " " + t . file + " " , err . Error ( ) ) } t . optionArgs . Add ( opt . GetName ( ) , opt . Clone ( ) ) } return nil }
because Link is top-down, the last repeated args take effect
because Link is top - down the last repeated args take effect
//link build //builds have been all parsed //Options have been all parsed