Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add ast.Node for seach goast.Ident #497

Closed
Konstantin8105 opened this issue Dec 21, 2017 · 2 comments
Closed

add ast.Node for seach goast.Ident #497

Konstantin8105 opened this issue Dec 21, 2017 · 2 comments

Comments

@Konstantin8105
Copy link
Contributor

Warnings:

// Error (CallExpr): 232: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 238: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 244: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 250: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 256: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 262: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 263: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 269: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 270: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 276: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 277: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 283: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 289: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 296: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 297: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 298: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 379: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 386: Cannot found goast.Ident in operation <ToVoid> or function free

Typical AST

|-FunctionDecl 0x3cf43f8 prev 0x3cb7cf8 <line:266:1, line:271:1> line:266:6 used free_dmatrix 'void (double **, long, long, long, long)'
| |-ParmVarDecl 0x3cf4190 <col:19, col:28> col:28 used m 'double **'
| |-ParmVarDecl 0x3cf4200 <col:31, col:36> col:36 used nrl 'long'
| |-ParmVarDecl 0x3cf4270 <col:41, col:46> col:46 nrh 'long'
| |-ParmVarDecl 0x3cf42e0 <col:51, col:56> col:56 used ncl 'long'
| |-ParmVarDecl 0x3cf4350 <col:61, col:66> col:66 nch 'long'
| `-CompoundStmt 0x3cf4948 <line:268:1, line:271:1>
|   |-CallExpr 0x3cf4700 <line:269:2, col:29> 'void'
|   | |-ImplicitCastExpr 0x3cf46e8 <col:2> 'void (*)(void *)' <FunctionToPointerDecay>
|   | | `-DeclRefExpr 0x3cf44c8 <col:2> 'void (void *)' Function 0x39f2bc0 'free' 'void (void *)'
|   | `-ImplicitCastExpr 0x3cf4730 <col:7, col:28> 'void *' <BitCast>
|   |   `-CStyleCastExpr 0x3cf46c0 <col:7, col:28> 'char *' <BitCast>
|   |     `-ParenExpr 0x3cf46a0 <col:15, col:28> 'double *'
|   |       `-BinaryOperator 0x3cf4638 <col:16, col:27> 'double *' '-'
|   |         |-BinaryOperator 0x3cf45f0 <col:16, col:23> 'double *' '+'
|   |         | |-ImplicitCastExpr 0x3cf45c0 <col:16, col:21> 'double *' <LValueToRValue>
|   |         | | `-ArraySubscriptExpr 0x3cf4570 <col:16, col:21> 'double *' lvalue
|   |         | |   |-ImplicitCastExpr 0x3cf4540 <col:16> 'double **' <LValueToRValue>
|   |         | |   | `-DeclRefExpr 0x3cf44f0 <col:16> 'double **' lvalue ParmVar 0x3cf4190 'm' 'double **'
|   |         | |   `-ImplicitCastExpr 0x3cf4558 <col:18> 'long' <LValueToRValue>
|   |         | |     `-DeclRefExpr 0x3cf4518 <col:18> 'long' lvalue ParmVar 0x3cf4200 'nrl' 'long'
|   |         | `-ImplicitCastExpr 0x3cf45d8 <col:23> 'long' <LValueToRValue>
|   |         |   `-DeclRefExpr 0x3cf4598 <col:23> 'long' lvalue ParmVar 0x3cf42e0 'ncl' 'long'
|   |         `-IntegerLiteral 0x3cf4618 <col:27> 'int' 1
|   `-CallExpr 0x3cf4900 <line:270:2, col:24> 'void'
|     |-ImplicitCastExpr 0x3cf48e8 <col:2> 'void (*)(void *)' <FunctionToPointerDecay>
|     | `-DeclRefExpr 0x3cf4748 <col:2> 'void (void *)' Function 0x39f2bc0 'free' 'void (void *)'
|     `-ImplicitCastExpr 0x3cf4930 <col:7, col:23> 'void *' <BitCast>
|       `-CStyleCastExpr 0x3cf48c0 <col:7, col:23> 'char *' <BitCast>
|         `-ParenExpr 0x3cf48a0 <col:15, col:23> 'double **'
|           `-BinaryOperator 0x3cf4838 <col:16, col:22> 'double **' '-'
|             |-BinaryOperator 0x3cf47f0 <col:16, col:18> 'double **' '+'
|             | |-ImplicitCastExpr 0x3cf47c0 <col:16> 'double **' <LValueToRValue>
|             | | `-DeclRefExpr 0x3cf4770 <col:16> 'double **' lvalue ParmVar 0x3cf4190 'm' 'double **'
|             | `-ImplicitCastExpr 0x3cf47d8 <col:18> 'long' <LValueToRValue>
|             |   `-DeclRefExpr 0x3cf4798 <col:18> 'long' lvalue ParmVar 0x3cf4200 'nrl' 'long'
|             `-IntegerLiteral 0x3cf4818 <col:22> 'int' 1
@Konstantin8105
Copy link
Contributor Author

Konstantin8105 commented Dec 21, 2017

#define NR_END 1
#define FREE_ARG char*

void free_dmatrix(double **m, long nrl, long nrh, long ncl, long nch)
/* free a double matrix allocated by dmatrix() */
{
        free((FREE_ARG) (m[nrl]+ncl-NR_END));
        free((FREE_ARG) (m+nrl-NR_END));
}

Go result:

// Error (CallExpr): 269: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 270: Cannot found goast.Ident in operation <ToVoid> or function free
func free_dmatrix(m [][]float64, nrl int32, nrh int32, ncl int32, nch int32) {
}
// Error (CallExpr): 276: Cannot found goast.Ident in operation <ToVoid> or function free
// Error (CallExpr): 277: Cannot found goast.Ident in operation <ToVoid> or function free

@Konstantin8105
Copy link
Contributor Author

Test for array:

	double v0[] = {12,121,1212,12121};
	double v1[] = {12,121,1212,12121};
	double *m[] = {&v0,&v1};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant