Bug can be exposed by deleting line aspectFoo.AddAdvice(&aop.Advice{Ordering: aop.AfterReturning, Method: "Bar", PointcutRefID: "pointcut_1"}) in example/main.go. There are two issues here. First, if round is called, retValues is not set, so when it is returned, it will return nil. After first change, another panic will rise complaining Result type cannot be converted to bool. In fact, here, I believe changing ProceedingJoinPoint.method to concrete type to store realFunc will make code much simpler.
Bug can be exposed by deleting line
aspectFoo.AddAdvice(&aop.Advice{Ordering: aop.AfterReturning, Method: "Bar", PointcutRefID: "pointcut_1"})
in example/main.go. There are two issues here. First, if round is called,retValues
is not set, so when it is returned, it will return nil. After first change, another panic will rise complaining Result type cannot be converted to bool. In fact, here, I believe changingProceedingJoinPoint.method
to concrete type to store realFunc will make code much simpler.