6038 Commits (c509f1c178720a79c0a4046663bf4fc8dfe3c907)

Author SHA1 Message Date
Sungkeun Cho 58b403c8ff [inferbo] Add vector model: empty
5 years ago
Sungkeun Cho c05062556f [inferbo] Add vector model: push_back
5 years ago
Sungkeun Cho f6b4f75e7c [inferbo] Pruning by vector::size
5 years ago
Sungkeun Cho e9cf5d33b3 [inferbo] Add models of vector constructors
5 years ago
Phoebe Nichols 085ffa166e Logging number of procedure summaries invalidated for incremental analysis
5 years ago
Ezgi Çiçek 8286347ebf [inferbo] Add models for Java's Integer
5 years ago
Martin Trojer 6f7cd25b3a buck integration, no lonfer bail when .buckconfig is missing
5 years ago
Sungkeun Cho 8c4be65754 [inferbo] Ondemand value generation of vector as function parameter
5 years ago
Sungkeun Cho f488c5d6b7 [inferbo] Disable function instantiation of relational domain
5 years ago
Phoebe Nichols fc17a0fce3 Add test for cost change detection with incremental analysis
5 years ago
Sungkeun Cho f066776b17 [inferbo] Add model: vector size
5 years ago
Sungkeun Cho 7a8e7d13e9 [inferbo] Add model: vector constructor
5 years ago
Jules Villard 41c003ace1 [biabd] rename models-related things to "biabduction-..."
5 years ago
Jules Villard fe701a17cc [diff] delete infer-diff
5 years ago
Jules Villard 13d54990bd [models] get rid of include-based C++ models
5 years ago
Ezgi Çiçek 675c79480d [pulse] Record writes explicitly as Attributes and get rid of heuristic in is_cell_read_only
5 years ago
Martin Trojer 0fe30d13c5 add flag for (undefined) functions that should be modelled as mallocs
5 years ago
Phoebe Nichols e7af794abb Add incremental analysis test for changing a file
5 years ago
Phoebe Nichols e3668daaa5 Add test incremental_analysis_remove_file to the toplevel makefile
5 years ago
Ezgi Çiçek b8d25d1301 [inferbo] Fix the model of Collections.emptySet
5 years ago
Sungkeun Cho a3229fc43a [inferbo] Suppress intended integer underflow of unsigned integer
5 years ago
Jules Villard 98089a3067 [ondemand] trace cache operations
5 years ago
Jules Villard d97ee3bfee [stats] less error-prone `incr` functions
5 years ago
Sungkeun Cho 80f4b64915 [inferbo] Prune linear bound by minmax
5 years ago
Jules Villard ddddea3eda [java] easier to switch between java 8 and java 11
5 years ago
Jules Villard 8bdc03bba4 [help] scrub default values in the checked-in version of the manuals
5 years ago
Ezgi Çiçek e320d8a580 [config] Rename `filter-report` command to `censor-report` and stop reporting them on console and bugs.txt
5 years ago
Sungkeun Cho b3f52284ed [inferbo] Ignore the top of latest prune of callees
5 years ago
Ezgi Çiçek 127902222d [pulse] Filter AddressOfStackVariable from read only heuristic check
5 years ago
Sungkeun Cho 84a6561dc9 [inferbo] Precise mod semantics on unsigned integer
5 years ago
Sungkeun Cho 26a4f83e8b [inferbo] Avoid pruning on array elements
5 years ago
Jules Villard a857fec1f3 [increr] test incremental analysis
5 years ago
Sungkeun Cho f3311dfd98 [inferbo] Weak update on array contents
5 years ago
Phoebe Nichols 587c3d35f1 Catch error in SpecsFiles.delete
5 years ago
Phoebe Nichols 1415be9153 Log the reverse analysis call graph for tests
5 years ago
Ezgi Çiçek 09ab685c7e [pulse] Handle stack refs escaping their scope via pointer
5 years ago
Phoebe Nichols ee5abef97c Invalidate summaries for changed procedures
5 years ago
Phoebe Nichols 218e4dca52 Do not delete results directory if incremental-analysis is enabled
5 years ago
Jules Villard 75dab37300 [config] better way to refer to the toplevel results dir
5 years ago
Jules Villard 4fe9b2c8dd [debug] fix error about non-existing dir in infer-out/captured/...
5 years ago
Jules Villard ea32a9dfd8 [ondemand] refactor to avoid loading unneeded proc descs
5 years ago
Artem Pianykh 346c89c717 Make infer binary runnable on Mojave without fiddling with SDKROOT
5 years ago
Phoebe Nichols 70474ec2de Fix test buck_flavours_diff
5 years ago
Mitya Lyubarskiy 860d3aa8a4 Utilize @[deriving fields] in BackendStats
5 years ago
Phoebe Nichols d84b0881ba Change command line options desciption for reanalyze and incremental-analysis
5 years ago
Mitya Lyubarskiy 7c2f1a955f [infer] Log accumulated backend counters to scuba
5 years ago
Ezgi Çiçek cb4a16b460 [pulse] Fix marking of AddressOfCppTemporary in the loop
5 years ago
Jules Villard 8fbdc4e252 [analyze] be more consistent in logging
5 years ago
Ezgi Çiçek 4d1b300e5b [pulse] Remove bindings with empty edges in pre
5 years ago
Jules Villard daf38c6d54 [summary] change `int ref` field in record to `mutable`
5 years ago
Jules Villard 4fde351565 [processpool] collect results from children
5 years ago
Jules Villard deb9afe121 [backend] a module for recording simple counters-based stats
5 years ago
Jules Villard 73179f7182 [specs] put specs files operations in their own module
5 years ago
Sungkeun Cho 124ab9fed7 [inferbo] Downgrade issues of void pointer
5 years ago
David Pichardie 51f6b30d43 Complete pattern matching for Sawja JBir translation
5 years ago
Mitya Lyubarskiy 7368039ba8 [infer] Make infer respect external-packages param
5 years ago
Phoebe Nichols 9be3af16ac Create ReverseAnalysisCallGraph.ml
5 years ago
Phoebe Nichols 578b1c95f1 Add function to add an edge to the call graph
5 years ago
Phoebe Nichols a4c1e94c5f Add function to delete summary from disk and caches
5 years ago
Ezgi Çiçek 0682ccc1e9 [cost][inferbo] Add models for indexOf
5 years ago
Nikos Gorogiannis af12e55344 [buck/java2] rely on (and modify) PATH to find infer binary to improve caching
5 years ago
Ezgi Çiçek 998e7c8fe3 [inefficientKeysetIterator] Turn on by default and fix msg
5 years ago
Jules Villard 937e971849 [objc] fix test so that it looks like it could compile
5 years ago
Phoebe Nichols af8c57e07f Write function to load specfiles
5 years ago
David Pichardie f47d4ed285 Compatibility with javalib 3.1 release
5 years ago
Nikos Gorogiannis 380515bc89 [changed files] don't fail on non-existent absolute paths
5 years ago
Phoebe Nichols 82eb91fe71 Move core CallGraph API from SyntacticCallGraph.ml to CallGraph.ml
5 years ago
Jules Villard 15246ec2a2 [tests] attempt at fewer race conditions
5 years ago
Phoebe Nichols 0ecd73d0f8 Add --incremental-analysis flag
5 years ago
Artem Pianykh 467149eaa8 [maven-release-plugin] prepare for next development iteration
5 years ago
Artem Pianykh 53db6e2ea0 [maven-release-plugin] prepare release infer-annotation-0.17.0
5 years ago
Jules Villard 128f37985d [ocaml] upgrade most dependencies
5 years ago
Jules Villard a504a67ec2 [pulse] model some of `std::basic_string`
5 years ago
Jules Villard 14b9975cf3 [pulse] support modelling destructors
5 years ago
Jules Villard d9aadf5df2 [pulse] allow models in invalidation traces
5 years ago
Nikos Gorogiannis 4f46567fa7 [annotreach] kill custom path sensitivity
5 years ago
Phoebe Nichols 3e7f500ae8 Rename CallGraph.ml to SyntacticCallGraph.ml
5 years ago
Mitya Lyubarskiy 99e6447663 [infer][logging] log time for merge captured targets to `infer_events`
5 years ago
Artem Pianykh e3fd05b145 Bump infer-annotations jar version
5 years ago
Nikos Gorogiannis 5b191c53ae [annotreach] clean up tests
5 years ago
Nikos Gorogiannis ffdc9193dc [annot-reach] complete the set of android thread annotations
5 years ago
Jules Villard b4f3bce0c0 [biabd] remove a quadratic list operation
5 years ago
Martin Trojer 124036ea0b New faster version of Diff/Test-Determinator
5 years ago
Phoebe Nichols 542dc9086a Remove optional caller_summary from Ondemand.analyze_proc_name
5 years ago
Phoebe Nichols dc37aeed5c Refactor ondemand.ml
5 years ago
Phoebe Nichols 8ce592576e Register callees in Summary.callee_pnames
5 years ago
Phoebe Nichols b835f281cb Store a set of callee names in Summary.t
5 years ago
Jules Villard ef26e8bb28 [clang] NamespaceAliasDecl is just a no-op
5 years ago
Phoebe Nichols 2f6510395e Remove redundant fields from proc_callback_args
5 years ago
Phoebe Nichols a3eed439f6 Supply caller summary to Ondemand.analyze_proc_desc and Ondemand.analyze_proc_name
5 years ago
Phoebe Nichols d9535f42d5 Introduce method SummaryPayload.read_toplevel_procedure
5 years ago
Ezgi Çiçek 4114f7fbdf [inefficientKeysetIterator] Chase predecessors 4 more nodes to check the pattern
5 years ago
Ezgi Çiçek 102018734f [inefficientKeysetIterator] Add missing type checks
5 years ago
Artem Pianykh 39dce8878f [infra] Update yojson and fix deprecations
5 years ago
Phoebe Nichols fa1bcbe12d Change ProcData to have a summary instead of a proc_desc
5 years ago
Phoebe Nichols bd1c3deac6 Remove proc_desc from iterate_procedure_callbacks
5 years ago
Phoebe Nichols 13c2c84897 Remove proc_desc from proc_callback_args
5 years ago
Nikos Gorogiannis ae4f7561b3 [hil] class constant types
5 years ago
Jules Villard c89a8d3e63 delete ownership checker
5 years ago
Phoebe Nichols bc208ee9c8 Remove analyze_proc callback in ondemand.ml
5 years ago
Jules Villard a3086cbc37 [clang] remove 3 year obsolete TODO
5 years ago
David Pichardie 95e90f741c Compatibility with javalib 3.0
5 years ago
Jules Villard e803a30c2d [clang] fix translation of `initListExpr` again
5 years ago
Jules Villard 14ce445f81 [pulse] run tests against C++17
5 years ago
Artem Pianykh 7792c02388 Use xcrun to find SDK paths on OSX host during configure
5 years ago
Nikos Gorogiannis a47a8d2627 [java][classpath] fixes
5 years ago
Phoebe Nichols 5d24982823 Make the task bar display progress more accurately
5 years ago
Nikos Gorogiannis 2f21d223ac [buck] don't fail on empty list of targets found from query
5 years ago
Mehdi Bouaziz 13dac07361 MaximumSharing: remove inplace
5 years ago
Nikos Gorogiannis fd09f1bfc9 [java] fix classpath order
5 years ago
Mehdi Bouaziz 4c50dc096c MaximumSharing: handle cycles
5 years ago
Ezgi Çiçek 563cc760ed [cost] Make the kind of complexity increase clear in the message
6 years ago
Jules Villard 86decb83f6 [pulse] record attributes of address not edge-reachable in the post
6 years ago
Jules Villard 493d38a682 [pulse] overwrite attributes of modified cells in interproc calls
6 years ago
Jules Villard 910131edca [pulse][trivial] remove unecessary option type, exception catching, and mutual recursion
6 years ago
Phoebe Nichols a4013bdbe9 Remove analyze_ondemand from Ondemand.callbacks
6 years ago
Jules Villard 58b1df6bb9 [clang] fix destructor placement for temporaries in conditionals
6 years ago
Jules Villard cb9ee662c8 [pulse] skip `folly::Optional::reset()`
6 years ago
Jules Villard 3a3c93140e [pulse] translate initListExpr in more cases
6 years ago
Jules Villard d96ab2458d [pulse] model lambda destructor
6 years ago
Jules Villard 91a2e2986b [pulse] model lambda capture by value
6 years ago
Jules Villard 433c144840 [pulse] calling known lambdas calls the corresponding proc name
6 years ago
Jules Villard 2bf6852b95 [pulse] model `std::function::operator=`
6 years ago
Mehdi Bouaziz 39c7ab86e1 Maximum sharing: reuse sharing and detect cycles
6 years ago
Mehdi Bouaziz 09efe4f2c1 Add tests for MaximumSharing
6 years ago
Jules Villard ae3089c2b2 [uninit] look at complex HIL expressions too
6 years ago
Jules Villard 007c044d92 [HIL] add warning about HIL unsoundness
6 years ago
Jules Villard 6dee89b786 [backend] print what we are doing when invalidating for reanalysis
6 years ago
Jules Villard 8eba6503a4 [backend] do not crash getting `State.get_loc_exn` when already crashing
6 years ago
Jules Villard 2d41b9d58a [pulse] skip `folly::SocketAddress::~SocketAddress`
6 years ago
Jules Villard f15d9915a0 [pulse] better types to avoid `_fun_` prefix to proc names in bug traces
6 years ago
Jules Villard a3311fb751 [pulse] C++ temporaries bound to globals do not "escape"
6 years ago
Phoebe Nichols 2f8d09c651 Change Hashtbl.clear to Hashtbl.reset
6 years ago
Radu Grigore 4ce3ff944d [topl] Avoid side-effects when Topl is inactive.
6 years ago
Radu Grigore a6edb94450 Biabduction prover now logs inconsistency reason.
6 years ago
Jules Villard 7f12ced394 [pulse] move to SIL proper
6 years ago
Nikos Gorogiannis 97c41120ae [buck/java2] eliminate project root config flag
6 years ago
Artem Pianykh 33424c12ac [infra] Fix deadcode check target
6 years ago
Dino Distefano 571ae7774a Extended check on n-th parameter to cpp method calls
6 years ago
Artem Pianykh 9d9df458b6 [infra] Add Config.execution_id and log it to scuba as a normal
6 years ago
Artem Pianykh 046132b4c5 [infra] Collect low-prio logs during execution and flush them to Scuba at the end in one go
6 years ago
Radu Grigore 3de7acada4 [topl] tiny fixes to tracing output
6 years ago
Radu Grigore 10d87eec4e [topl] Simple error reporting.
6 years ago
Mehdi Bouaziz 0efd8960e1 [Tenv] Maximum sharing
6 years ago
Radu Grigore 384b3c5798 Assert that there is at most one flowgraph per procedure name.
6 years ago
Mehdi Bouaziz 5f8514a8c2 [sqlite] Normalize blobs used for comparison
6 years ago
Ezgi Çiçek 2db1a3b8e3 [cost,inferBo] Add models for Collections.unmodifiable* getters
6 years ago
Jules Villard f43544598b [oops] unbreak unit tests
6 years ago
Jules Villard 04233ee49b [clang] destroy C++ temporaries
6 years ago
Jules Villard 0592bac25e [pulse] explain SIL logical variables in terms of program access paths
6 years ago
Jules Villard c9f4768be7 [pulse] move to SIL
6 years ago
Jules Villard 695b493b56 [pulse] move [PulseTrace] inside [PulseDomain]
6 years ago
Mehdi Bouaziz b03aeb49c2 [eradicate] remove the constant flag only_keep_intersection
6 years ago
Jules Villard 512b42ece7 [pulse] move PulseInvalidation inside PulseDomain
6 years ago
Jules Villard 457b017343 [pulse] more general graph visitor API
6 years ago
Ezgi Çiçek fedb8e5136 [infer] Cleanup preanalysis
6 years ago
Nikos Gorogiannis 013d153538 [buck/java2] hashcons the global tenv during merging
6 years ago
Nikos Gorogiannis 8776a31f7d [infer][buck capture] kill dead code
6 years ago
Ezgi Çiçek 898dd104c8 [cost] Invoke Cost issues only once
6 years ago
Ezgi Çiçek 0f43930f40 [cost] Refactor cost issue types and enable detecting allocation complexity increase on cold start
6 years ago
Jules Villard 6f5cb512db [pulse] add example of FN in const-ref-bound temporary
6 years ago
Jules Villard e14809baa8 [pulse] fix temporaries test code
6 years ago
Jules Villard 21f66dd197 [pulse] do not model `operator=` as assignment
6 years ago
Jules Villard ab427fd3f3 [clang] cache of names of C++ temporaries
6 years ago
Jules Villard a9a7239831 [clang] split `inject_destructors` into two functions
6 years ago
Jules Villard db800f138b [clang] rewrite scope computations
6 years ago
Jules Villard eaa5c32432 [clang] some more debug info
6 years ago
Jules Villard c3d55817b1 [pulse] another test for temporaries
6 years ago
Jules Villard 696731523d [pname dispatcher] more permissive templated function match
6 years ago
Dino Distefano 472f155a7a Improved rule on block capturing CXX Reference
6 years ago
Ezgi Çiçek be85296759 [frontend] Move Preanalysis to frontend so that it is run always
6 years ago
Josh Berdine cfc1c8be36 [copyright] Remove years
6 years ago
Josh Berdine 5b190629bf [copyright] Change to copyright headers without years
6 years ago
Nikos Gorogiannis 7904ca31c0 [scheduler] consume all updates each time
6 years ago
Ezgi Çiçek d2eb3c8cc6 [inefficient-keyset-iterator] New checker for finding inefficient keySet iterator
6 years ago
Nikos Gorogiannis 733a29e44b [buckjava2] Move genrule capture integration logic from shell to OCaml
6 years ago
Radu Grigore d86e2f0d1c [topl] Generate monitor.
6 years ago
Radu Grigore 047c64c528 [topl] Instrument SIL.
6 years ago
Ezgi Çiçek 6f422fb78f [cost] Modify error message to include trace and constructor information
6 years ago
Ezgi Çiçek 99bc7363bf [cost] Suppress reports on Java access methods
6 years ago
Nikos Gorogiannis d3cf79a095 [buckjava2] integration
6 years ago
Nikos Gorogiannis bc61543875 [buckjava2] refactor
6 years ago
Nikos Gorogiannis 768e2b0332 [tests] stop sharing the root buck repo in java tests
6 years ago
Nikos Gorogiannis 66c45a7f54 [logging] don't clobber progress bar with call graph schedule
6 years ago
Ezgi Çiçek 19b445e00c [cost] Add PERFORMANCE_VARIATION FP test for Java access methods
6 years ago
Ezgi Çiçek 19eac53f0e [cost] Add models for Collections.max/min
6 years ago
Jules Villard 33ae8bae02 [inferbo] silence firing assert
6 years ago
Jules Villard a3d8b9c4a4 [clang][oops] restore previous functionality
6 years ago
Ezgi Çiçek 0ef038332d [purity] More models for Java Map
6 years ago
Jules Villard d00b31f48c [clang] also skip blacklisted flags when passed as -flag=arg
6 years ago
Radu Grigore 16431f5015 When writing debug HTML, don't crash on procs with empty bodies.
6 years ago
Martin Trojer f05d98321a only add --blacklist-regex flag in buck mode
6 years ago
Ezgi Çiçek bb9f44dee2 [cost] Fix and refactor cost models
6 years ago
Ezgi Çiçek 99eda7e3a8 [inferbo,cost] Fix java arrays
6 years ago
Ezgi Çiçek 5b2a36409c [inferbo] Add models for org.json.JSONArray
6 years ago
Ezgi Çiçek 98ecc13a5e [inferbo,cost] Add models for java.util.Arrays and java.util.List
6 years ago
Martin Trojer 90a1324ed3 make blacklisted clang flags configurable
6 years ago
Dino Distefano 24728dc093 New ObjC checker for calls to @optional methods
6 years ago
Nikos Gorogiannis 88d31a7a21 [infer][tests] avoid races in less hacky way
6 years ago
Peter O'Hearn 9b8a908ad3 [Pulse] model folly delayed destruction
6 years ago
Jules Villard 1a19cd5e2d [clang] change `offsetof()` test
6 years ago
Jules Villard 1395d5581d [clang] upgrade to 8.0.0
6 years ago
Jules Villard 4697b22fb4 [clang] make ndk-build integration compatible with clang 8
6 years ago
Ezgi Çiçek 2c15245260 [loop-invariance] Take purity models into account
6 years ago
Ezgi Çiçek c14b917e7f [purity] Rename tests
6 years ago
Ezgi Çiçek a01a4a3658 [purity] Enhance purity models with invalidated arguments
6 years ago
Nikos Gorogiannis 4e0808f1ca [infer][test_build] add fatal warning and fix instance
6 years ago
Radu Grigore 3cf774a142 Fixed typos in comments.
6 years ago
Jules Villard d4e4ed55bc [objc] make quandary test run
6 years ago
Jules Villard 8330394eff [clang] new option to override `-I` paths
6 years ago
Jules Villard 2fff66b1c9 [clang] refactor argument dispatch logic
6 years ago
Ezgi Çiçek a092c4f3f9 [cost] Generalize Java's sort model
6 years ago
Nikos Gorogiannis c697222a04 [scheduler] fix deadlock introduced in D15373840
6 years ago
Ezgi Çiçek bc082da199 [cost] Make unmodeled functions pure by default
6 years ago
Ezgi Çiçek 75cfdf23ea [clang] Fix arc lint
6 years ago
Jules Villard 1241e98403 [clang] avoid error on ObjC model
6 years ago
Dino Distefano 2f3b376996 Added is_optional_objc_method predicate
6 years ago
Ezgi Çiçek b455baae5d [loop-invariance] Invalidate args to T function calls
6 years ago
Ezgi Çiçek 639c91c29f [loop-invariance] Add FPs for modified global and static invalidation
6 years ago
Jeremy Dubreil b06bb42a02 [infer] more nullable tests
6 years ago
Jeremy Dubreil c96e72b990 [eradicate] record example of false positive with invariants between variables
6 years ago
Nikos Gorogiannis eb15e931d1 [callgraph] better progress info
6 years ago
Jeremy Dubreil 79b0b8172d [eradicate] add a model for java.nio.file.Path.getParent()
6 years ago
Nikos Gorogiannis 08ba3e2acb [callgraph] log a bit more
6 years ago
Mitya Lyubarskiy 04c3ccaac5 [infer][logging] support passing arbitrary scuba columns to infer
6 years ago
Mitya Lyubarskiy 6f06e9b20f [infer] Ability to present a list of key-value pairs as a map
6 years ago
Nikos Gorogiannis d9853aa53d [scheduler] quiet at procedure level
6 years ago
Mehdi Bouaziz 64dea4dc0f [inferbo] No need to canonicalize paths in on-demand
6 years ago
Nikos Gorogiannis 66f6f54035 [oomguard]
6 years ago
Jules Villard d586630edf [pules] do not print templated part of function names
6 years ago
Jules Villard 5de9bc29d2 [pulse] better error messages
6 years ago
Jules Villard b700af9ffb [hil] do not put parens around trivial expressions
6 years ago
Mehdi Bouaziz 9db3a3a0b6 [Inferbo] Abstract repeated fields in paths
6 years ago
Mehdi Bouaziz ca28d07cfc [debug] Session kinds
6 years ago
Jules Villard 9717be7e2f [biabd] various very minor changes
6 years ago
Jules Villard 3b3139a29e [biabd] kill Config.undo_join
6 years ago
Ezgi Çiçek d033e72196 [purity] Add tests for locality
6 years ago
Dino Distefano c077cab1a9 (Hopefully) fixed problems with AL
6 years ago
Nikos Gorogiannis 5b4cb893de [processpool] schedule work to idle workers once per refresh cycle
6 years ago
Nikos Gorogiannis 4bdc6efd2e [scheduler] bottom-up callgraph scheduling
6 years ago
Andrew Adams-Moran 0ad15356c2 Add @Cleanup annotation
6 years ago
Mehdi Bouaziz 0a5810c579 [NodePrinter] Force usage of with_session
6 years ago
Jeremy Dubreil 4a44bd4430 [eradicate] remove the constant flag return_nonnull_silent
6 years ago
Jules Villard 6364199b94 [pulse] traces record how values were constructed
6 years ago
Jules Villard 70d38cea77 [pulse] rename PulseTrace.t -> PulseTrace.breadcrumbs
6 years ago
Jeremy Dubreil dc89f3b5a4 [eradicate] remove dated debug info
6 years ago
Mehdi Bouaziz c52125cfcf Debug html for header files
6 years ago
Mehdi Bouaziz 57eb7395d7 Ensure source-file-html files are written
6 years ago
David Lively 94c0cffd56 [checkers] Fiddling w/annotation-reachability-cxx trace format
6 years ago
Jeremy Dubreil 8d36c33d20 [eradicate] record false positive when testing the return on an assignment
6 years ago