-
Notifications
You must be signed in to change notification settings - Fork 3
Capabilities
This document was generated from 'src/documentation/print-capabilities-markdown.ts' on 2025-02-08, 20:17:15 UTC presenting an overview of flowR's current capabilities (v2.2.1). Please do not edit this file/wiki page directly.
Each capability has an id that can be used to link to it (use the link symbol to get a direct link to the capability). The internal id is also mentioned in the capability description. This id can be used to reference the capability in a labeled test within flowR. Besides, we use colored bullets like this:
π© | flowR is capable of handling this feature fully |
πΆ | flowR is capable of handling this feature partially |
π΄ | flowR is not capable of handling this feature |
βοΈ This could be a feature diagram... βοΈ
Note
The capabilities are a qualitative measure of the features that flowR can handle. Statements like "flowR can fully handle 50/80 capabilities" are discouraged as the capabilities may have a vastly different granularity. Please prefer using a statement like "flowR has only partial support for feature 'XY'" (or simply reference this document) within the flowR sources.
-
Names and Identifiers π
The recognition of syntactical and non-syntactical names, including their resolutions to corresponding definitions. Internal ID:names-and-identifiers
Consider the following R code:
"f" <- function(x) { get("x") } `y x` <- 2 print(`y x` + f(3))
Identifiers of interest are:
- The symbols
x
(name-normal),f
(name-quoted), and`y x`
(name-escaped). - The function calls
<-
,function
,{
,get
,+
, andprint
(function-calls, all given with name-normal). Especially{
is identified as a grouping of the function-definitions' body. - The quoted name created by a function call
get
(name-created).
Besides the parameter
x
, which is resolved in its lexicographic-scope, the other identifiers are resolved in the global-scope.flowchart LR 10["`**function** *RFunctionDefinition*`"] subgraph "flow-10" ["function(x) #123; get(#34;x#34;) #125;"] 1["`**x** *RSymbol*`"] 6(["`**#34;x#34;** *RString*`"]) 8[["`**get** *RFunctionCall*`"]] 9[["`**#123;** *RExpressionList*`"]] end 0["`**#34;f#34;** *RString*`"] 11[["`**#60;#45;** *RBinaryOp*`"]] 13{{"`**2** *RNumber*`"}} 12["`**#96;y x#96;** *RSymbol*`"] 14[["`**#60;#45;** *RBinaryOp*`"]] 16(["`**#96;y x#96;** *RSymbol*`"]) 18{{"`**3** *RNumber*`"}} 20[["`**f** *RFunctionCall*`"]] 21[["`**#43;** *RBinaryOp*`"]] 23[["`**print** *RFunctionCall*`"]] 1 -->|"defined-by-on-call"| 18 6 -->|"reads"| 1 8 -->|"reads, argument"| 6 9 -->|"returns, argument"| 8 10 -.-|function| flow-10 0 -->|"defined-by"| 10 0 -->|"defined-by"| 11 11 -->|"argument"| 10 11 -->|"returns, argument"| 0 12 -->|"defined-by"| 13 12 -->|"defined-by"| 14 14 -->|"argument"| 13 14 -->|"returns, argument"| 12 16 -->|"reads"| 12 18 -->|"defines-on-call"| 1 20 -->|"reads"| 0 20 -->|"argument"| 18 20 -->|"returns"| 9 20 -->|"calls"| 10 21 -->|"reads, argument"| 16 21 -->|"reads, argument"| 20 23 -->|"reads, returns, argument"| 21
R Code of the (simplified) Dataflow Graph
The analysis required 16.82βms (including parse and normalize, using the tree-sitter engine) within the generation environment. We encountered unknown side effects (with ids: 23 (linked)) during the analysis.
"f" <- function(x) { get("x") } `y x` <- 2 print(`y x` + f(3))
-
Form π
Internal ID:form
-
Normal π (515 tests, slice: 232, dataflow: 221, desugar: 60, lineage: 1, and backed with output: 4)
π© Recognize symbol uses likea
,plot
, ... (i.e., "normal variables or function calls").
See Advanced R/Bindings and R Definition/Identifiers for more info. Internal ID:name-normal
-
Quoted π (13 tests, slice: 10, desugar: 3)
π© Recognize"a"
,'plot'
, ... In general, R allows to envelop names in quotations to allow for special characters such as spaces in variable names. However, this only works in the context of definitions. To access these names as variables, one has to either use function such asget
or escape the name with backticks.
See Advanced R/Non-Syntactic Names for more info. Internal ID:name-quoted
-
Escaped π (19 tests, slice: 11, dataflow: 8, and backed with output: 1)
π© Recognize`a`
,`plot`
, ...
See Advanced R/Non-Syntactic Names for more info. Internal ID:name-escaped
-
Created π (10 tests, slice: 6, dataflow: 4)
πΆ Recognize functions which resolve strings as identifiers, such asget
, ...
See flowr#633 for more info. Internal ID:name-created
-
Normal π (515 tests, slice: 232, dataflow: 221, desugar: 60, lineage: 1, and backed with output: 4)
-
Resolution π
Internal ID:resolution
-
Global Scope π (14 tests, slice: 5)
π© For example, tracking a big table of current identifier bindings Internal ID:global-scope
-
Lexicographic Scope π (21 tests, slice: 10)
π© For example, support function definition scopes Internal ID:lexicographic-scope
-
Closures π (20 tests, slice: 12, dataflow: 8)
πΆ Handling function factories and friends. Currently, we do not have enough tests to be sure. Internal ID:closures
-
Dynamic Environment Resolution π
π΄ For example, usingnew.env
and friends Internal ID:dynamic-environment-resolution
-
Environment Sharing π
π΄ Handling side-effects by environments which are not copied when modified Internal ID:environment-sharing
-
Search Type π (3 tests, slice: 1)
π© Separating the resolution for functions and symbols. Internal ID:search-type
-
Search Path π
π΄ Handling R's search path as explained in Advanced R. Currently, flowR does not support dynamic modifications withattach
,search
, orfn_env
and tests are definitely missing. Yet, theoretically, the tooling is all there. Internal ID:search-path
-
Namespaces π
π΄ Handling R's namespaces as explained in Advanced R Internal ID:namespaces
-
Accessing Exported Names π (7 tests, desugar: 4, slice: 3)
πΆ Resolving calls with::
to their origin. Accessing external files is allowed, although the name of packages etc. is not resolved correctly. Internal ID:accessing-exported-names
-
Accessing Internal Names π
π΄ Similar to::
but for internal names. Internal ID:accessing-internal-names
-
Library Loading π (1 test, slice: 1)
π΄ Resolve libraries identified withlibrary
,require
,attachNamespace
, ... and attach them to the search path Internal ID:library-loading
-
Global Scope π (14 tests, slice: 5)
- The symbols
-
Expressions π
Internal ID:expressions
-
Function Calls π (511 tests, slice: 214, dataflow: 191, desugar: 105, lineage: 1, and backed with output: 5)
Internal ID:function-calls
-
Grouping π (133 tests, desugar: 110, dataflow: 13, slice: 10)
π© Recognize groups done with(
,{
, ... (more precisely, their default mapping to the primitive implementations). Internal ID:grouping
-
Normal Call π (148 tests, slice: 115, desugar: 20, dataflow: 13, and backed with output: 3)
π© Recognize and resolve calls likef(x)
,foo::bar(x, y)
, ... Internal ID:call-normal
-
Unnamed Arguments π (183 tests, slice: 135, dataflow: 45, desugar: 3, and backed with output: 4)
π© Recognize and resolve calls likef(3)
,foo::bar(3, c(1,2))
, ... Internal ID:unnamed-arguments
-
Empty Arguments π (5 tests, dataflow: 2, slice: 2, desugar: 1)
π© Essentially a special form of an unnamed argument as infoo::bar(3, ,42)
, ... Internal ID:empty-arguments
-
Named Arguments π (43 tests, slice: 36, dataflow: 5, desugar: 2)
π© Recognize and resolve calls likef(x = 3)
,foo::bar(x = 3, y = 4)
, ... Internal ID:named-arguments
-
String Arguments π (9 tests, desugar: 9)
π© Recognize and resolve calls likef('x' = 3)
,foo::bar('x' = 3, "y" = 4)
, ... Internal ID:string-arguments
-
Resolve Arguments π (33 tests, slice: 33)
πΆ Correctly bind arguments (includingpmatch
). Currently, we do not have a correct implementation forpmatch
. Furthermore, more tests would be nice. Internal ID:resolve-arguments
-
Side-Effects in Argument π (2 tests, dataflow: 1, slice: 1)
πΆ Handle side-effects of arguments (e.g.,f(x <- 3)
,f(x = y <- 3)
, ...). We have not enough tests to be sure Internal ID:side-effects-in-argument
-
Side-Effects in Function Call π (13 tests, slice: 9, dataflow: 4)
πΆ Handle side-effects of function calls (e.g.,setXTo(3)
, ...) for example achieved with the super assignment. We need more tests and handlings. Furthermore, we do not detect side effects with external files, network, logging, etc. Internal ID:side-effects-in-function-call
-
Unnamed Arguments π (183 tests, slice: 135, dataflow: 45, desugar: 3, and backed with output: 4)
-
Anonymous Calls π (8 tests, dataflow: 3, slice: 3, desugar: 2)
π© Recognize and resolve calls like(function(x) x)(3)
,factory(0)()
, ... Internal ID:call-anonymous
-
Infix Calls π (478 tests, slice: 193, dataflow: 182, desugar: 102, lineage: 1, and backed with output: 5)
π© Recognize and resolve calls likex + y
,x %>% f(y)
, ... Internal ID:infix-calls
-
Redefinition of Built-In Functions/primitives π (12 tests, slice: 12, and backed with output: 1)
πΆ Handle cases likeprint <- function(x) x
,`for` <- function(a,b,c) a
, ... Currently, we can not handle all of them there are no tests. Still wip as part of desugaring Internal ID:redefinition-of-built-in-functions-primitives
-
Functions with global side effects π (26 tests, slice: 22, dataflow: 4)
πΆ Support functions likesetwd
which have an impact on the subsequent program. Internal ID:functions-with-global-side-effects
-
Index Access π
Internal ID:index-access
-
Single Bracket Access π (25 tests, slice: 10, desugar: 8, dataflow: 7)
π© Detect calls likex[i]
,x[i, ,b]
,x[3][y]
, ... This does not include the real separation of cells, which is handled extra. Internal ID:single-bracket-access
-
Double Bracket Access π (40 tests, slice: 35, desugar: 4, dataflow: 1)
π© Detect calls likex[[i]]
,x[[i, b]]
, ... Similar to single bracket. Internal ID:double-bracket-access
-
Dollar Access π (27 tests, slice: 23, dataflow: 3, desugar: 1)
π© Detect calls likex$y
,x$"y"
,x$y$z
, ... Internal ID:dollar-access
-
Slot Access π (2 tests, dataflow: 1, desugar: 1)
π© Detect calls likex@y
,x@y@z
, ... Internal ID:slot-access
-
Access with Argument-Names π (3 tests, slice: 2, desugar: 1)
π© Detect calls likex[i = 3]
,x[[i=]]
, ... Internal ID:access-with-argument-names
-
Access with Empty π (4 tests, desugar: 4)
π© Detect calls likex[]
,x[2,,42]
, ... Internal ID:access-with-empty
-
Subsetting (Multiple Indices) π (23 tests, slice: 22, dataflow: 1)
π© Detect calls likex[i > 3]
,x[c(1,3)]
, ... Internal ID:subsetting-multiple
-
Single Bracket Access π (25 tests, slice: 10, desugar: 8, dataflow: 7)
-
Operators π
Internal ID:operators
-
Unary Operator π (11 tests, desugar: 6, dataflow: 5)
π© Recognize and resolve calls like+3
,-3
, ... Internal ID:unary-operator
-
Binary Operator π (476 tests, slice: 191, dataflow: 182, desugar: 102, lineage: 1, and backed with output: 5)
π© Recognize and resolve calls like3 + 4
,3 * 4
, ... Internal ID:binary-operator
-
Special Operator π (12 tests, slice: 11, desugar: 1)
π© Recognize and resolve calls like3 %in% 4
,3 %*% 4
, ... Internal ID:special-operator
-
Model Formula π (9 tests, desugar: 6, dataflow: 3)
πΆ Recognize and resolve calls likey ~ x
,y ~ x + z
, ... including their implicit redefinitions of some functions. Currently, we do not handle their redefinition and only treat model formulas as normal binary operators Internal ID:model-formula
-
Assignments and Bindings π (7 tests, slice: 7, and backed with output: 4)
Internal ID:assignments-and-bindings
-
Local Left Assignment π (298 tests, slice: 192, dataflow: 97, desugar: 8, lineage: 1, and backed with output: 9)
π© Handlex <- 3
,x$y <- 3
, ... Internal ID:local-left-assignment
-
Local Right Assignment π (19 tests, dataflow: 7, slice: 6, desugar: 6)
π© Handle3 -> x
,3 -> x$y
, ... Internal ID:local-right-assignment
-
Local Equal Assignment π (23 tests, dataflow: 12, desugar: 6, slice: 5)
π© Handlex = 3
,x$y := 3
, ... Internal ID:local-equal-assignment
-
Local Table Assignment π (12 tests, desugar: 5, slice: 4, dataflow: 3)
π© Handlex[,a:=3,]
, ... Internal ID:local-table-assignment
-
Super Left Assignment π (35 tests, dataflow: 17, slice: 12, desugar: 6)
π© Handlex <<- 42
,x$y <<- 42
, ... Internal ID:super-left-assignment
-
Super Right Assignment π (10 tests, desugar: 6, dataflow: 4)
π© Handle42 ->> x
,42 ->> x$y
, ... Internal ID:super-right-assignment
-
Return Value of Assignments π (26 tests, dataflow: 18, slice: 8)
π© Handlex <- 3
returning3
, e.g., inx <- y <- 3
Internal ID:return-value-of-assignments
-
Assignment Functions π (366 tests, slice: 195, dataflow: 137, desugar: 33, lineage: 1, and backed with output: 5)
πΆ Handleassign(x, 3)
,delayedAssign(x, 3)
, ... Currently we can not handle all of them and tests are rare. Internal ID:assignment-functions
-
Range Assignment π (1 test, slice: 1)
π© Handlex[1:3] <- 3
,x$y[1:3] <- 3
, ... Internal ID:range-assignment
-
Replacement Functions π (5 tests, dataflow: 3, slice: 2)
πΆ Handlex[i] <- 3
,x$y <- 3
, ... as`[<-`(x, 3)
, ... Currently work in progress as part of the desugaring but still untested. Internal ID:replacement-functions
-
Locked Bindings π
π΄ HandlelockBinding(x, 3)
, ... Internal ID:locked-bindings
-
Local Left Assignment π (298 tests, slice: 192, dataflow: 97, desugar: 8, lineage: 1, and backed with output: 9)
-
Special Operator π (12 tests, slice: 11, desugar: 1)
-
Unary Operator π (11 tests, desugar: 6, dataflow: 5)
-
Control-Flow π (8 tests, slice: 5, dataflow: 3)
Internal ID:control-flow
-
if π (129 tests, dataflow: 55, desugar: 51, slice: 23, and backed with output: 2)
π© Handleif (x) y else z
,if (x) y
, ... Internal ID:if
-
for loop π (42 tests, slice: 26, dataflow: 14, desugar: 2, and backed with output: 2)
π© Handlefor (i in 1:3) print(i)
, ... Internal ID:for-loop
-
while loop π (35 tests, slice: 22, dataflow: 9, desugar: 4)
π© Handlewhile (x) b
, ... Internal ID:while-loop
-
repeat loop π (25 tests, slice: 14, dataflow: 9, desugar: 2)
π© Handlerepeat {b; if (x) break}
, ... Internal ID:repeat-loop
-
break π (15 tests, dataflow: 7, slice: 6, desugar: 2)
π© Handlebreak
(includingbreak()
) ... Internal ID:break
-
next π (8 tests, dataflow: 3, slice: 3, desugar: 2)
π© Handlenext
(includingnext()
) ... Internal ID:next
-
switch π (1 test, slice: 1)
π© Handleswitch(3, "a", "b", "c")
, ... Internal ID:switch
-
return π (41 tests, slice: 36, dataflow: 5)
π© Handlereturn(3)
, ... in function definitions Internal ID:return
-
exceptions π
π΄ Handletry
,stop
, ... Internal ID:exceptions
-
if π (129 tests, dataflow: 55, desugar: 51, slice: 23, and backed with output: 2)
-
Function Definitions π (19 tests, slice: 12, dataflow: 7, and backed with output: 1)
Internal ID:function-definitions
-
Normal π (104 tests, slice: 69, dataflow: 24, desugar: 11)
π© Handlefunction() 3
, ... Internal ID:normal-definition
-
Formals π
Internal ID:formals
-
Named π (64 tests, slice: 35, dataflow: 22, desugar: 7)
π© Handlefunction(x) x
, ... Internal ID:formals-named
-
Default π (18 tests, slice: 11, dataflow: 5, desugar: 2)
π© Handlefunction(x = 3) x
, ... Internal ID:formals-default
-
Dot-Dot-Dot π (11 tests, dataflow: 5, slice: 3, desugar: 3)
π© Handlefunction(...) 3
, ... Internal ID:formals-dot-dot-dot
-
Promises π (3 tests, slice: 3)
πΆ Handlefunction(x = y) { y <- 3; x }
,function(x = { x <- 3; x}) { x * x }
, ... We try to identify promises correctly but this is really rudimentary. Internal ID:formals-promises
-
Named π (64 tests, slice: 35, dataflow: 22, desugar: 7)
-
Implicit Return π (129 tests, slice: 93, dataflow: 36)
π© Handle the return offunction() 3
, ... Internal ID:implicit-return
-
Lambda Syntax π (6 tests, dataflow: 4, slice: 2)
π© Support\(x) x
, ... Internal ID:lambda-syntax
-
Normal π (104 tests, slice: 69, dataflow: 24, desugar: 11)
-
Important Built-Ins π
Internal ID:important-built-ins
-
Non-Strict Logical Operators π (29 tests, desugar: 20, dataflow: 9)
π© Handle&&
,||
, ... Internal ID:non-strict-logical-operators
-
Pipe and Pipe-Bind π (5 tests, dataflow: 3, desugar: 2)
πΆ Handle the new (4.1) pipe and pipe-bind syntax:|>
, and=>
. We have not enough tests and do not support pipe-bind. Internal ID:built-in-pipe-and-pipe-bind
-
Sequencing π (1 test, slice: 1)
π΄ Handle:
,seq
, ... by gathering value information using abstract interpretation. Internal ID:built-in-sequencing
-
Internal and Primitive Functions π
π΄ Handle.Internal
,.Primitive
, ... In general we can not handle them as they refer to non-R code. We currently do not support them when used with the function. Internal ID:built-in-internal-and-primitive-functions
-
Options π
π΄ Handleoptions
,getOption
, ... Currently, we do not support the function at all. Internal ID:built-in-options
-
Help π (3 tests, desugar: 2, dataflow: 1)
πΆ Handlehelp
,?
, ... We do not support the function in a sensible way but just ignore it (although this does not happen resolved). Internal ID:built-in-help
-
Reflection / "Computing on the Language" π
Internal ID:reflection-"computing-on-the-language"
-
Get Function Structure π
π΄ Handlebody
,formals
,environment
to access the respective parts of a function. We do not support the functions at all. Internal ID:get-function-structure
-
Modify Function Structure π
π΄ Handlebody<-
,formals<-
,environment<-
to modify the respective parts of a function. We do not support the functions at all. Internal ID:modify-function-structure
-
Quoting π (1 test, slice: 1)
πΆ Handlequote
,substitute
,bquote
, ... We partially ignore some of them but most likely not all. Internal ID:built-in-quoting
-
Evaluation π
π΄ Handleeval
,evalq
,eval.parent
, ... We do not handle them at all. Internal ID:built-in-evaluation
-
Parsing π
π΄ Handleparse
,deparse
, ... We handle them as unknown function calls, but not specifically besides that. Internal ID:built-in-parsing
-
Get Function Structure π
-
Non-Strict Logical Operators π (29 tests, desugar: 20, dataflow: 9)
-
Grouping π (133 tests, desugar: 110, dataflow: 13, slice: 10)
-
Literal Values π
Internal ID:literal-values
-
Numbers π (538 tests, desugar-shell: 204, desugar-tree-sitter: 196, slice: 193, dataflow: 141, and backed with output: 9)
π© Recognize numbers like3
,3.14
,NA
, float-hex, ... Internal ID:numbers
-
Strings π (95 tests, desugar: 45, slice: 36, dataflow: 14, and backed with output: 1)
π© Recognize strings like"a"
,'b'
, ... Internal ID:strings
-
Raw Strings π (7 tests, desugar: 7)
π© Recognize raw strings liker"(a)"
, ... Internal ID:raw-strings
-
Raw Strings π (7 tests, desugar: 7)
-
Logical π (109 tests, desugar: 55, dataflow: 36, slice: 18, and backed with output: 1)
π© Recognize the logicalsTRUE
andFALSE
, ... Internal ID:logical
-
NULL π (2 tests, dataflow: 1, slice: 1)
π© RecognizeNULL
Internal ID:null
-
Inf and NaN π (3 tests, dataflow: 2, slice: 1)
π© RecognizeInf
andNaN
Internal ID:inf-and-nan
-
Numbers π (538 tests, desugar-shell: 204, desugar-tree-sitter: 196, slice: 193, dataflow: 141, and backed with output: 9)
-
Function Calls π (511 tests, slice: 214, dataflow: 191, desugar: 105, lineage: 1, and backed with output: 5)
-
Non-Standard Evaluations/Semantics π
Internal ID:non-standard-evaluations-semantics
-
Recycling π
π΄ Handle recycling of vectors as explained in Advanced R. We do not support recycling. Internal ID:recycling
-
Vectorized Operator or Functions π
π΄ Handle vectorized operations as explained in Advanced R. We do not support vectorized operations. Internal ID:vectorized-operator-or-functions
-
Hooks π
π΄ Handle hooks likeuserhooks
andon.exit
. We do not support hooks. Internal ID:hooks
-
Precedence π (34 tests, slice: 33, dataflow: 1, and backed with output: 4)
π© Handle the precedence of operators as explained in the Documentation. We handle the precedence of operators (implicitly with the parser). Internal ID:precedence
-
Attributes π
Internal ID:attributes
-
User-Defined π
π΄ Handle attributes likeattr
,attributes
, ... We do not support attributes. Internal ID:user-defined
-
Built-In π (10 tests, slice: 7, dataflow: 3)
π΄ Handle built-in attributes likedim
, ... We do not support them. Internal ID:built-in
-
User-Defined π
-
Recycling π
-
Types π
Internal ID:types
-
Primitive π
π΄ Recognize and resolve primitive types likenumeric
,character
, ... We do not support typing currently. Internal ID:types-primitive
-
Non-Primitive π
π΄ Recognize and resolve non-primitive/composite types. We do not support typing currently. Internal ID:types-non-primitive
-
Inference π
π΄ Infer types from the code. We do not support typing currently. Internal ID:types-inference
-
Coercion π
π΄ Handle coercion of types. We do not support typing currently. Internal ID:types-coercion
-
Object-Oriented Programming π
Internal ID:object-oriented-programming
-
S3 π
π΄ Handle S3 classes and methods as one unit (with attributes etc.). Including Dispatch and Inheritance. We do not support typing currently and do not handle objects of these classes "as units."
See Advanced R/S3 for more info. Internal ID:oop-s3
-
S4 π
π΄ Handle S4 classes and methods as one unit. Including Dispatch and Inheritance We do not support typing currently and do not handle objects of these classes "as units."
See Advanced R/S4 for more info. Internal ID:oop-s4
-
R6 π
π΄ Handle R6 classes and methods as one unit. Including Dispatch and Inheritance, as well as its Reference Semantics, Access Control, Finalizers, and Introspection. We do not support typing currently and do not handle objects of these classes "as units."
See Advanced R/R6 for more info. Internal ID:oop-r6
-
R7/S7 π
π΄ Handle R7 classes and methods as one unit. Including Dispatch and Inheritance, as well as its Reference Semantics, Validators, ... We do not support typing currently and do not handle objects of these classes "as units."
See R7 and S7 for more info. Internal ID:r7-s7
-
S3 π
-
Primitive π
-
Structure π
Internal ID:structure
-
Comments π (13 tests, slice: 9, desugar-shell: 4, desugar-tree-sitter: 3, and backed with output: 3)
π© Recognize comments like# this is a comment
, ... and line-directives Internal ID:comments
-
Semicolons π (65 tests, dataflow: 31, slice: 29, desugar: 5)
π© Recognize and resolve semicolons likea; b; c
, ... Internal ID:semicolons
-
Newlines π (270 tests, slice: 178, dataflow: 82, desugar: 9, lineage: 1, and backed with output: 5)
π© Recognize and resolve newlines likea b c
, ... Internal ID:newlines
-
Comments π (13 tests, slice: 9, desugar-shell: 4, desugar-tree-sitter: 3, and backed with output: 3)
-
System, I/O, FFI, and Other Files π
Internal ID:system-i-o-ffi-and-other-files
-
Sourcing External Files π (14 tests, dataflow: 7, slice: 7)
πΆ Handlesource
,sys.source
, ... We are currently working on supporting the inclusion of external files. Currently we can handlesource
. Internal ID:sourcing-external-files
-
Handling Binary Riles π
π΄ Handle files dumped with, e.g.,save
, ... due to their frequent usage. We do not support binary files. Internal ID:handling-binary-riles
-
I/O π
π΄ Handleread.csv
,write.csv
, ... We do not support I/O for the time being but treat them as unknown function calls. Internal ID:i-o
-
Foreign Function Interface π
π΄ Handle.Fortran
,C
,... We do not support FFI but treat them as unknown function calls. Internal ID:foreign-function-interface
-
System Calls π
π΄ Handlesystem
,system.*
, ... We do not support system calls but treat them as unknown function calls. Internal ID:system-calls
-
Sourcing External Files π (14 tests, dataflow: 7, slice: 7)
-
Pre-Processors/external Tooling π
π΄ Handle pre-processors likeknitr
,rmarkdown
,roxygen2
... We do not support pre-processors for the time being (being unable to handle things like@importFrom
) Internal ID:pre-processors-external-tooling