Skip to content

Incorrect slices #31

@archived-c

Description

@archived-c

Produces incorrect slices given the following source code (line numbers included for clarity):

     1	void bar(int a, int b) {
     2	  if (a != 0) return;
     3	  if (b == 42) return;
     4	  printf("%d %d\n", a, b);
     5	}
     6	
     7	int foo(int x) {
     8	  int v = 0;
     9	  for (int i = 0; i < x; ++i) {
    10	    v++;
    11	  }
    12	  bar(x, v);
    13	  return 0;
    14	}
    15	
    16	int main() {
    17	  int n = 3;
    18	  return foo(n);
    19	}

Produces the following srcSlice output:

     1	example.cpp,main,n,def{17},use{18},dvars{},pointers{},cfuncs{}
     2	example.cpp,bar,b,def{1},use{3,4},dvars{},pointers{},cfuncs{printf{3}}
     3	example.cpp,bar,a,def{1},use{2,4},dvars{},pointers{},cfuncs{printf{2}}
     4	example.cpp,foo,i,def{9},use{9},dvars{},pointers{},cfuncs{}
     5	example.cpp,foo,v,def{8},use{1,2,4,10,12},dvars{},pointers{},cfuncs{printf{2},bar{2}}
     6	example.cpp,foo,x,def{7},use{9,12},dvars{},pointers{},cfuncs{bar{1}}

In the first line of the srcSlice output, n is correctly defined and used. However, I also expected n to appear in cfuncs{foo(1)}. Additionally, variable v is incorrectly stated to be used on lines 2 & 4 which appears to actually be where variable x should be used.

Is this the expected output? If not, is this resolved when building most recent version from source?

To be clear, I downloaded prebuilt srcML from https://www.srcml.org/#download and prebuilt srcSlice from https://www.srcml.org/tools.html

To produce the above, I used the following commands:

$ srcml example.cpp --position -o example.xml
$ srcslice example.xml > example.slice
$ cat -n example.slice

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions